关于一维数组和一位字符串的问题,输出内容不同

vc_engineer 2008-12-11 02:14:00
#include<iostream.h>

void main()
{
int a[3]={1,2,3};
// cout<<&a<<endl;

cout<<a<<endl;

char b[]="you !";
// cout<<&b<<endl;

cout<<b<<endl;
}
以上这段代码,为什么一个输出地址,另一个输出内容呢。这是为什么?
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
herman~~ 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fengxuxing 的回复:]
cout除了对所有基本类型进行了重载之外,
还对这四种四种类型进行了重载
const char*
const signed char *
const unsigned char *
void *
按照理解来讲,除了字符串,其他所有的类型指针全部看成void*,实现是输出是指针的值,也就是地址。
--c++ primer plus

[/Quote]


学习
Big鹏 2008-12-11
  • 打赏
  • 举报
回复

C语言里面,char * 与char []是一样的,都是指字符串,
这很特殊,相当于C++里面的string。
当输出首地址时,就会把字符串全输出来,如果想取首地址的话,请用printf("%p\n",b);
Qlaiaqu 2008-12-11
  • 打赏
  • 举报
回复
cout除了对所有基本类型进行了重载之外,
还对这四种四种类型进行了重载
const char*
const signed char *
const unsigned char *
void *
按照理解来讲,除了字符串,其他所有的类型指针全部看成void*,实现是输出是指针的值,也就是地址。
--c++ primer plus
wiowei 2008-12-11
  • 打赏
  • 举报
回复
字符串虽然是指针,不过在输出流可以看成一种类型
张赐 2008-12-11
  • 打赏
  • 举报
回复
这个就是整型数组和字符数组的区别。

首先字符串的名字就是指向这个字符串首地址的指针。

在输出字符数组的时候,系统会一直一个一个从字符数组的第一个字符开始读,一直读到字符串结束符\0为止,所以给一个首地址就可以读出所有字符。

但是整型数组确不是这样。
ccl3311 2008-12-11
  • 打赏
  • 举报
回复
数组与指针是相通的,直接输出数组名,相当于输出了一个指向数组第一个元素的指针的值;
char型数组被当作char*型的字符串处理,直接输出按字符串(从指针指向的字符开始到字符串结束标志'\0')表示。
其它类型的数组没有这种变换。
梦之安魂曲 2008-12-11
  • 打赏
  • 举报
回复
#include <iostream.h>

void main()
{
int a[3]={1,2,3};
// cout < <&a < <endl;

cout < <a < <endl;

char b[]="you !";

cout < <b < <endl;//这两句相当于。 char *b="you!"; cout<<b;应该是编译器作了判断,毕竟字符串的输出也是靠地址指针指定位置。
}

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧