当前位置: 代码迷 >> C语言 >> 关于数组的问题?
  详细解决方案

关于数组的问题?

热度:241   发布时间:2007-04-04 12:14:03.0
关于数组的问题?
#include<stdio.h>
main()
{
char s[5];
printf("s=%p\ns[0]=%p",s,&s[0]);/*两个地址一样,说明数组名是数组第一个元素的地址*/
}
==============
#include<stdio.h>
main()
{
char s[5]=“china";
printf("%s",s);/*说明数组名是数组第一个元素的地址,所以直接用数组名就可以*/
}
===========问题来了。
#include<stdio.h>
main()
{
int s[5]={1,2,3,4,5};
printf("%d",s);/*既然数组名是数组第一个元素的地址,那为什么这里不是打印第一个元素,而是报错呢?*/
} /*而是必须用s[0]呢,是不是只有字符数组才可以?*/
================
#include<stdio.h>
main()
{
int s[6];
scanf("%d",s);/*请问这里输入的是不是作为数组的第一个元素*/
printf("%d",s[0]);
}

[此贴子已经被作者于2007-4-4 20:49:43编辑过]

搜索更多相关的解决方案: include  元素  

----------------解决方案--------------------------------------------------------
scanf("%d",s),s代表地址
建议lZ看一下scanf和printf函数的原型
----------------解决方案--------------------------------------------------------
第一个问题答案是肯定的
第二个问题嘛
你将字符与数字类型数组的输入输出弄混了,他们是不一样的,不能象你这么写,如果要实现,只能用for!
----------------解决方案--------------------------------------------------------
int s[5]={1,2,3,4,5};
printf("%d",s);/*既然数组名是数组第一个元素的地址,那为什么这里不是打印第一个元素,而是报错呢?*/
} /*而是必须用s[0]呢,是不是只有字符数组才可以?*/

数组名是数组第一个元素的地址阿
应该加&


----------------解决方案--------------------------------------------------------
字符串有结束标志'\0',所以可以连续的输出,对于一个int型的数组,它的结束标志是什么?所以,假如你是一位printf函数的编写者,只能特殊对待字符串数组,字符串的这种输出方式符合我们使用的习惯和思维方式,而不可能将所有类型的数组都用一句printf加以输出。
如果把数组的名字看作是数组第一个元素的地址,我认为这样有失数组在内存中表达的整体性。数组的名字也就是数组的首地址,数组就是在内存中开辟的连续区域,数组的大小表示了数组在内存中存放的界限。

[此贴子已经被作者于2007-4-5 10:50:37编辑过]


----------------解决方案--------------------------------------------------------
5楼回答经典!
----------------解决方案--------------------------------------------------------

地址和元素没分清 。


----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
  相关解决方案