怎么让一个字符数组输出地址?什么时候能让其输出整个字符串?

第一个输出因为传入的是这个数组的地址,因而根据<<的重载,输出整个字符串,而为什么第二个输出为这个数组的地址?... 第一个输出因为传入的是这个数组的地址,因而根据<<的重载,输出整个字符串,而为什么第二个输出为这个数组的地址? 展开
 我来答
庄政警
2017-11-27 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:877万
展开全部
因为a的类型是个char*,而&a的类型是char(*)[10],只要不是char*,标准库的<<就会当做地址处理,所以cout<<&a输出地址
也就是说,要输出一个c风格字符串的地址,转换一下类型就行,随便转换成其他内置类型的都行,&a就相当于转换了下类型,不直观而已,要直观就用强制方式比如
cout<<(int*)a;
或者干脆就只要数值地址
cout<<(void*)a;
金色潜鸟
2017-11-27 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5656万
展开全部
c/c++ 语言 中 形式逻辑 不成立。 它对待 字符串的 方式,和 一般类型的 变量的 方式 是不同的,无法套用 用于 一般变量类型的 方法。这是 这种语言的 缺点。
你不得不死记:
char a[]="abc 123 Yz";
语句中 要用 cout << a; 输出字符串(的值)。要用 cout << &a; 输出字符串的地址。
&a[0] 明明是 数组元素 a[0] 的地址,cout << &a[0]; 却输出了字符串(的值)。
c 语言中也是: char a[]="abc 123 Yz";
语句中 a 是地址,printf("%s",a); 输出字符串(的值)。
语句中 a 是地址, printf("%s %p",a,a);
一样a, 格式 %s 输出了字符串, 格式 %p 输出了地址 !
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友710bc54
2018-09-28
知道答主
回答量:4
采纳率:0%
帮助的人:3161
展开全部
先要明白:1、cout输出值是根据你娈量类型而定。也就是说int型cout输出也是int,char型 cout当然输出“zhangwei"。
2、cout输出的地址默认是16进制。
那摸摸地:你要让char a【】输出是数字型地址,在输出前强转下就OK
如:cout<<(int)a 简单型
cout<< reinterpret_cast<unsigned int>(a) 正规型
呵呵。。你看来是明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
委林匡晗昱
2020-01-29 · TA获得超过3840个赞
知道大有可为答主
回答量:3052
采纳率:25%
帮助的人:215万
展开全部
因为a的类型是个char*,而&a的类型是char(*)[10],只要不是char*,标准库的<<就会当做地址处理,所以cout<<&a输出地址
也就是说,要输出一个c风格字符串的地址,转换一下类型就行,随便转换成其他内置类型的都行,&a就相当于转换了下类型,不直观而已,要直观就用强制方式比如
cout<<(int*)a;
或者干脆就只要数值地址
cout<<(void*)a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0f4b097
2017-11-27
知道答主
回答量:2
采纳率:0%
帮助的人:1813
展开全部
cout对于char[]有重载,这是一个特例,只有字符串数组会输出整个数组,如果是int数组或者别的数组,则不会。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式