C++指针指向字符串问题

如果定义了指针*p指向一个字符串"China"cout<<p;的结果是Chinacout<<*p;的结果是C为什么?... 如果定义了 指针 *p 指向 一个字符串 "China"
cout<<p; 的结果是 China
cout<<*p;的结果是 C
为什么?
展开
 我来答
zhuhuaizhong
2013-05-10 · TA获得超过7276个赞
知道大有可为答主
回答量:3978
采纳率:63%
帮助的人:3608万
展开全部
你可以这样理解:

cout 对象在输出东西的时候,如果后边跟的是指针,一般会输出地址值,但如果这个地址指向的是字符串,则会将字符串输出到屏幕上,因为字符串一般都是和用户打交道的,为了省去由指针得到字符的过程,所以做了个这样的“规定"。

*p 的 p 定义的是 char 类型,*p 是取指针出指向的char ,故取出来的是 C ,而 C 跟在 cout 后边输出就是普通的输出了,不符合上边的”规定“。
汐日南莘
推荐于2017-12-16 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7597万
展开全部
p是字符串的首地址
在输出时系统会自动的往下加,也就是说指针会自动指向下一个字符的地址,直到指向最后一个,,输出最后一个字符 ,所以cout<<p会输出整个字符串
*p是字符串的第一个字符所以cout<<*p只会输出第一个字符
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyjie999
2013-05-10 · TA获得超过199个赞
知道小有建树答主
回答量:197
采纳率:100%
帮助的人:181万
展开全部
1) cout后面接字符串的地址,表示输出这个字符串, 所以结果是China
2) p 是char *型,*p表示取一个char字节的值,*p等价于p[0], *(p+1)等价于p[1], ..., 所以输出C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chujiangke001
2013-05-10 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:696万
展开全部
cout<<p; 的结果是 China //相当于scanf("%s",p);
cout<<*p;的结果是 C //相当与scanf("%c",p[0]);

c++ 重载了<< .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐创客
2021-03-08
知道答主
回答量:34
采纳率:0%
帮助的人:1.9万
展开全部

第五十六集 指针指向字符串

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式