1,指针与字符数组的关系
char a[ ]="I love C++";
char *a="I love C++";
a[ ]是一个数组,在内存中会分配9个字节的地址,我们可以通过sizeof(a)知道。
数组内容是可以改变的例如:a[ 0]='s';然后运行输出的时候 cout<<a<<endl; 得到s love c++;
而char *a就不同,它是一个字符指针,a是一个指针变量,存储的是字符串"I love C++"的首地址。
可能你会说这跟数组的a是一个意思,其实这涉及到指针的作用,以后会明白的。
既然a是地址,为什么我们使用cout<<a<<endl;时输出的不是地址,而是字符串了。
这时因为当cout是其自动将char*型指针指向的内存地址中的内容,所以不输出地址而输出字符串,解决的办法是:我们可以添加(void*)或者(int*)等只要不是char*型就行(见程序)。