char字符取地址给 char* 的问题
在这里看一段代码
char ch = 'z';
char *ptr_ch = &ch;
cout<< ptr_ch <<endl;
看上去应该会输出地址,但是其实
先输出了字符z中间乱码,最后又输个a。
原因就是如果指针类型是int*或double*这里数值型的输出的肯定是地址。而对于char*,在c++中就当成字符串就是通过指针连续打印只到遇到'\0'结束,这里是'\0'字符指针不知道指向哪就出现了乱码。我们看如果是字符串
char *ch = "z";
char* ptr_ch = ch;
cout<< ptr_ch<<endl;
//输出为z
字符串char* 是编译器会默认给补'\0'的。也就是char *的指针变量是会输出字符串的,如果要输出地址,加(void*)强制转换
char ch = 'z';
char* ptr_ch = ch;
cout<< (void*)ptr_ch<<endl;
//输出为Ox61ff0b