回 帖 发 新 帖 刷新版面

主题:指针初始为char类型的问题

请教大虾,指针初始为char类型时:
char *pstar="my family";
指针是存地址的,存的是字符串中第一个字符的地址,为什么cout<<pstar;输出的却是整个字符串啊?机理是什么啊?

回复列表 (共4个回复)

沙发

机理,就是,c style字符串最后一个NUL('\0')起了作用。如果还想继续追究其原因,那只有一个办法了,就是RTFSC(read the fucking source code) :)

板凳

char*代表的是“指向字符型变量的指针”,而不是“指向一个字符型变量的指针”,注意“一个”在这里的细微区别
另外:注意,'a'在内存中实际存放的是"a\0"
结合1楼的叙述,lz明白了吗

3 楼

谢谢你的指教,但我还不是很清楚。比如一个int*指针,我觉得很好理解的。
变量名  value;   地址  0012ff70(举例);内容 120;
变量名  pvalue;  地址  …………  略     ;内容 0012ff70;


这样palue指向value的指针关系很清楚。能否详细叙述一下字符型的指针和‘\0'的关系吗?还有像上面int*型那样的对应关系嘛?

4 楼

字符型指针的整体取值是连续取内存,直到取到\0为止。以上

我来回复

您尚未登录,请登录后再回复。点此登录或注册