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