写给22岁的你:我对数组地址有点不懂 请大家教教我
来源:百度文库 编辑:高校问答 时间:2024/08/31 03:52:08
#include<iostream>
using namespace std;
void main()
{
int a[3]={1,2,3};
char b[4]={'a','b','c'};
cout<<b<<endl<<a<<endl;
}
以上的程序为什么b是输出 abc
而a是输出地址?
同样是数组为什么输出类行不同呢?
数组名不是表示数组的首地址吗?
using namespace std;
void main()
{
int a[3]={1,2,3};
char b[4]={'a','b','c'};
cout<<b<<endl<<a<<endl;
}
以上的程序为什么b是输出 abc
而a是输出地址?
同样是数组为什么输出类行不同呢?
数组名不是表示数组的首地址吗?
呵呵,这个你应该看iostram库里面对<<这个operator的重载代码。
你b 是char[],在调用operator<<时,退化为char *,而operator<< 处理char *就是当字符串输出么。
同理a就变成了int *,operator<<对int *的策略,应该是输出指针指向的地址。
b和a 都是数组的首地址,但是b数组的首地址就是abc,字符串可以整体输出呀,而且数字数组就不行,所以a输出的就是一个地址.例:a=00111010,而b=abc