当前位置: 代码迷 >> C语言 >> 一个基础知识的问题
  详细解决方案

一个基础知识的问题

热度:83   发布时间:2005-10-10 15:02:00.0
一个基础知识的问题
void main()
{char name[10];
scanf("%s",name);
}
中("%s",name);的name不用加&可以吗
书上说一围数组本身就是一个地址,不理解啊,给讲一下可不可以啊?
搜索更多相关的解决方案: 知识  基础  

----------------解决方案--------------------------------------------------------
数组名就是此数组的起始地址(也就是此数组的第一个元素的地址)
----------------解决方案--------------------------------------------------------
看一下指针部分就明白了!
----------------解决方案--------------------------------------------------------
数组名就表示数组元素的第一个人元素的物理存储位置
----------------解决方案--------------------------------------------------------
同意楼上观点
----------------解决方案--------------------------------------------------------
同意
----------------解决方案--------------------------------------------------------
以下是引用philip_yin在2005-10-10 15:07:59的发言: 数组名就是此数组的起始地址(也就是此数组的第一个元素的地址)
不是不用加,加就会出错
----------------解决方案--------------------------------------------------------
假如你定义了一个指针*p,又定义了一个数组a[],然后让p=a;这时候无论是p还是a都是指向数组的首地址的指针。给你举个例子:
#include <stdio.h>
void main()
{
int *p;
int a[]={1,2,3,4,5};
p=a;
    int i;
for(i=0;i<5;i++)
  printf("%d,",(*p)++);
}
输出的就是1,2,3,4,5
----------------解决方案--------------------------------------------------------
数组名name就是数组的首地址即name[0]的地址,他们在数值上是相等的。且name是常量,不能修改。企图通过name+1得到name[1]的地址是错误的,可以用指针赋值,int *p,p=name,p=p+1;
                    在多维数组中,数组名和第一个元素的地址在数值上相等,但含义不同,相关的运算也不同。
             &name[0]   &name[1]   &name[2]   &name[3]   &name[4]   &name[5]...............
               ↓         ↓          ↓          ↓          ↓          ↓
     name→  name[0]-----name[1]-----name[2]-----name[3]----name[4]----name[5]................

[此贴子已经被作者于2005-10-14 16:24:39编辑过]



----------------解决方案--------------------------------------------------------
数组名代表了此数组的首位地址,因此不用加取地址符号
----------------解决方案--------------------------------------------------------
  相关解决方案