char *const name和const char *name(为什么cout<<name;不是地址而是字符串)
//C++11标准以后 char *const name = "abcd"; 或者char *p = "abcd";是会出现warning的。
//因为"abcd"是字面量是不可改的常量,而指针却不是const *char;
char a[10] = "abcd";
// 常指针:指针本身为常量,数据可改。
char *const name = a;
//修改常指针指向的内容
name[3] = 'a';
// 指向常量的指针:指针可改。
const char *name2 = "abcd";
//name2指向新的常量"efgh"
name2 = "efgh";
//因为C++对<<有重载所有输出的不是地址而直接是字符串
std::cout<<name<<std::ends<<name2<<std::endl;
return 0;
}
为什么cout<<name;不是地址而是字符串
cout对此有重载,如果是字符串,输出的是内容。可以做一个强制类型转换,让它调用整数的重载版本。
cout<<(int)name<<endl;