主题:指针初始为char类型的问题
comprehension
[专家分:0] 发布于 2010-04-27 16:10:00
请教大虾,指针初始为char类型时:
char *pstar="my family";
指针是存地址的,存的是字符串中第一个字符的地址,为什么cout<<pstar;输出的却是整个字符串啊?机理是什么啊?
回复列表 (共4个回复)
沙发
cxxcomp [专家分:2370] 发布于 2010-04-27 17:18:00
机理,就是,c style字符串最后一个NUL('\0')起了作用。如果还想继续追究其原因,那只有一个办法了,就是RTFSC(read the fucking source code) :)
板凳
雪光风剑 [专家分:27190] 发布于 2010-04-27 20:34:00
char*代表的是“指向字符型变量的指针”,而不是“指向一个字符型变量的指针”,注意“一个”在这里的细微区别
另外:注意,'a'在内存中实际存放的是"a\0"
结合1楼的叙述,lz明白了吗
3 楼
comprehension [专家分:0] 发布于 2010-04-28 12:38:00
谢谢你的指教,但我还不是很清楚。比如一个int*指针,我觉得很好理解的。
变量名 value; 地址 0012ff70(举例);内容 120;
变量名 pvalue; 地址 ………… 略 ;内容 0012ff70;
这样palue指向value的指针关系很清楚。能否详细叙述一下字符型的指针和‘\0'的关系吗?还有像上面int*型那样的对应关系嘛?
4 楼
雪光风剑 [专家分:27190] 发布于 2010-04-28 22:33:00
字符型指针的整体取值是连续取内存,直到取到\0为止。以上
我来回复