仔细分辨char *和char []的区别
1. 类型不同:char *p是一个字符型的指针变量,而char s[]是一个字符数组;
2. 内容不同:前者p存储的是字符串的首地址,而后者a存储的是多个字符;
3. 相关转换:p=s (OK),而s=p (NO)(注意:在C语言中字符串常量本质上是一个地址)
4. 具体代码的实现:
char *p;
cout<<sizeof(p);//在64位机里指针占8位字节数
输出结果:8
char *p;
cout<<sizeof(*p);//*p是p所指向的char型,故占一个字节
输出结果:1
char s[]="abc";
cout<<sizeof(s);//末尾结束符"\0"占一个字符
输出结果:4
char *p;
char s[]="abc";
p=s;
cout<<p<<endl;
cout<<*p<<endl;
cout<<s<<endl;
cout<<*s<<endl;
输出结果:
abc
a
abc
a
//*p++ 和 p++
char *p;
char s[]="abc";
p=s;
cout<<p++<<endl;
cout<<p<<endl;
//cout<<*p++<<endl;
//cout<<*p<<endl;
输出结果:
abc
bc
//a
//b