c++讀書筆記1


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);



    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章