现在的位置: 首页 > 综合 > 正文

c++读书笔记1

2013年03月11日 ⁄ 综合 ⁄ 共 739字 ⁄ 字号 评论关闭

1.为什么字符串文字量不能赋值和改变
void f()
{ char * p="Bohr";//①
   p[3]='e'; //error//②
//以下是可以的yes
  char p[]="Zeno";//③
  p[0]='R';//④
}

      这里需明确一个概念: 字符串文字量的类型是“适当个数的const 字符的数组”,所以“Bohr”的类型是const char[5] ;所以不能修改。
     而如果希望一个字符串能够修改,就必须将有关字符复制到数组里:如上述代码③、④所示。
带有前缀L的字符串,例如:L"angle",是宽字符的字符串,其类型为:const  wchar_t[];

2.到数组的指针
int v[]={1,2,3,4};
int *p =v;//指向开始元素(隐式转换)
int *p2=&v[0];
int *p3=&v[4];//指向最后元素以后的一个位置;

3.指针运算
  当某个算术运算符被应用于 T* 的指针p时, 假定p是指向T类型对象数组中的一个元素;那么p+1将指向下一个元素。 这意味着p+1的整数值比p大sizeof(T);

4.静态变量
  例如:
   
void f(int a)
{
    while(a--)
      {
          static int n=0;//初始化一次
           int x=0;//在每次f()调用时初始化a次
      }
   cout<<"n=="<<n++<<", x=="<<x++<<'\n';
}
 
 int main()
{
    f(3);
}

打印: n==0,x==0
             n==1,x==0
             n==2,x==0

5.宏
  宏在c中很重要,c++用的很少,
  但,它在c++中用作条件编译时不可避免的。
  例如: 
   
int f(int a
#ifdef arg_two,
int b
#endif);

    

抱歉!评论已关闭.