一个数组a[]代表,a代表数组首地址,那么为什么输出a时,会把所有数组中的东西都输出出来呢
答案:3 悬赏:60 手机版
解决时间 2021-03-05 03:26
- 提问者网友:谁的错
- 2021-03-04 17:18
一个数组a[]代表,a代表数组首地址,那么为什么输出a时,会把所有数组中的东西都输出出来呢
最佳答案
- 五星知识达人网友:轮獄道
- 2021-03-04 17:38
什么类型的数组?若是char类型的就能输出,其他类型的不行,比如
char a[]="kkk"; //会输出全部的k
char b[]={'a','b'}; //会输出a,b直到遇到结束符才结束输出
这是C语言的特性,当指针指向的是char类型时,直接输出指针,会导至输出指针指向的字符直到遇到字符串结束符为止。
再如
char c='a';
char *p=&c;
同样会输出一大堆东西。
char a[]="kkk"; //会输出全部的k
char b[]={'a','b'}; //会输出a,b直到遇到结束符才结束输出
这是C语言的特性,当指针指向的是char类型时,直接输出指针,会导至输出指针指向的字符直到遇到字符串结束符为止。
再如
char c='a';
char *p=&c;
同样会输出一大堆东西。
全部回答
- 1楼网友:话散在刀尖上
- 2021-03-04 19:24
数组a[]的a的确代表数组的首地址,但“为什么输出a时,会把所有数组中的东西都输出出来”的原因不在于a,而在于你使用的输出函数。你若用了C里的printf(),如果你在双引号间用%s来“指示”它输出,它就会输出一大串东西;而若用%c来控制,它就只输出首地址那一个单元中的数据。要知道那些控制符其实是调用了库函数来操作数据的!C++中的cout <<看起来没有控制符,但它是自动检测数据的类型的,然后决定怎么个输出法;如果拿不准了就报错……所以,输出什么,怎么输出,并不是完全由原来的数据决定,而是看你想输出什么模样的东西!
- 2楼网友:野慌
- 2021-03-04 18:20
在c中,二维数组可以看成是多个一维数组叠加构成的,如:
int a[3][4]; //就可以看成是3个具有4个元素的一维数组叠加而成
那么,a[0]就是第0行元素的地址,a[1]即为第1行元素的地址,...
但是a[0],a[1],a[2]这3个名称又构成一个数组,其名为a,a为a[0]的地址,a+1为a[1]的地址...
所以也可以说,a、a+1、a+2是二维数组的行地址,a[0]就是*a,就是二维数组的第0行的元素地址,...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯