问题如下:
char* p = "abcd";
cout << p << endl;//就能输出p的所有内容,而不需要*符号
int* a = (int*)10;
cout << *a << endl;//得到的才是常量指针a指向的内容
因为:** p指向的是字符串的首地址,而字符串指针就是通过首地址开始读取,到’/0’结束,而此时的Int类型指针,a存储的是10的地址,*a就是获取a存储的地址的值。 **
补充字符串指针和字符串数组的区别:
内存中的存储区域不一样,字符数组存储在全局数据区或栈区,指针字符串存储在常量区。全局区和栈区的字符串(包括其它数据)有读取和写入的权限,而常量区的字符串只有读取权限,没有写入权限。内存权限不同导致,对于字符数组来说你可以进行赋值和修改,但字符串指针却不能进行任何赋值。