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