C,C++中关于char* 以及 char数组的问题

1,我定义了char*Pstr,这个Pstr明显是个指针,为何输出coutf<<Pstr<<endl;结果不是地址,而是整个字符串??2,当后面使用int的时候cout<... 1,我定义了char *Pstr,这个Pstr明显是个指针,为何输出coutf<<Pstr<<endl;结果不是地址,而是整个字符串??
2,当后面使用int的时候cout<<arr<<endl;结果却是地址????结合1和2两问题,int和char在这里有何不同??
3,我想用sizeof()求“hello”的大小,怎么求?
4,定义char str[]={'a','b','c','d','e','f','g','\0'}数组的时候,cout<<str<<endl;为何结果是整个字符串?不是地址???
展开
 我来答
爱问西瓜爱答树
2013-07-27 · TA获得超过1760个赞
知道小有建树答主
回答量:890
采纳率:50%
帮助的人:290万
展开全部
  1. Pstr是指针,*Pstr,取地址的内容。显示什么,这个取决于cout用哪个函数,由参数类型决定。想输出字符串的地址用char str2[]="123abc";

2.arr是数组,是首地址。int * ,表示指向的地址空间是int 4字节的,char *当然是char 1字节的。

3.sizeof("hello");

4.cout有个对字符串输出的重载,全部输出,遇到'\0'结束。

arongustc
科技发烧友

2013-07-27 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5948万
展开全部
  1. 运算符重载可以做任何事情,没有任何规则所只要是地址打印出就是地址。而且char*是特殊的,从来没有在哪输出过地址

  2. 运算符重载,不是int/char不同,而是重载后int*和char*不同

  3. sizeof("hello"),这是唯一的办法,赋值给指针后只能用strlen,不能用sizeof

  4. 同样,不要总想着参数是地址,输出也是地址,如果这样,高级语言就太无用了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veket的小号
推荐于2016-02-17 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3980万
展开全部
1.因为 iostream内部 cin cout 对char* 做了特殊处理.......因为c/c++ 输入输出字符串通常要用到char*
如果直接输出地址,就要用别的方法来输出字符串了 就不方便了.....所以直接输出地址 那里放着的字符串......

3、sizeof("hello");得到 字符串实际长度 + \0 占的一个字节
一般用strlen函数.......

同 1、2,str数组名 是 char* 地址
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangsonglin_c
高粉答主

2013-07-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:6950万
展开全部
1、这是cout(const char *)函数的定义。为方便处理字符串。
2、字符串是数组,int只是一个数;
3、include <string.h>
4、同1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式