C语言:数组的值是地址

“数组有值,其为首元素的地址”,这种说法对吗?... “数组有值,其为首元素的地址”,这种说法对吗? 展开
 我来答
匿名用户
2013-12-24
展开全部
不对。
数组名是数组的首地址,就是数组中第一个元素的地址,是常量。常量是不能出现在赋值号=左边作为左值的。楼上的都没有解释清楚,说数组名就是指针是错误的,指针是变量,是用来存储变量地址值的变量,而数组名是常量。一般情况下声明一个数组,比如char a[10];之后,数组名a都是数组的首地址,是一个地址常量。但是在函数声明的形参列表中除外。比如:int foo(char a[10]);在这种情况下这样的声明与int foo(char a[]);int foo(char * a);是等价的,就是说这种情况下,就算你写的是数组的形式,编译器实际处理的时候也当指针来处理(注意指针是变量,形参也是变量,二者刚好对应)。所以在函数foo内部,你对a进行++, --, +=,=之类的带赋值的操作是完全合法的,因为此时a就是一个指针,不是数组名,当你往函数foo里面传入一个已经事先声明的数组的首地址时候,指针a里面的值就是你这个已经声明的数组的首地址,这样你在foo里面就可以对你那个数组进行操作,正是因为C有这个传地址的优点,所以省略了很多不必要的拷贝工作,试想如果没有这个传地址,你传一个有几万个元素的数组进去,那拷贝工作是相当可观的。这样,你该明白了int main(int argc, char ** argv);里面为什么可以对argv进行++操作了,既然“main函数的第二个形参是一个指向字符串的指针数组”,argv出现在函数声明中,所以它实际上是一个指针,它并不是“一个指向字符串的指针数组”,而是一个可以获取“一个指向字符串的指针数组”的首地址值的变量。
zhangguominCYD
2013-12-24
知道答主
回答量:14
采纳率:0%
帮助的人:6.6万
展开全部
“数组有值,其为首元素的地址”,是不对的。
数组是一组有序数据的集合,数组中的每一个数据都属于同一个数据类型,并且按顺序存放在一个连续的存储空间中,即最低的地址存放第一个元素,最高的地址存放最后的一个元素。
以一位数组为例:
int a[10]={0,1,2,3,4,5,6,7,8,9};说明定义了一个整型数组,数组名为a,共有10个元素,在“{}”中存放这10个同一个数据类型元素,每个元素用逗号隔开。、、、、、、
数组名是数组的首地址,可以找到数组中的各个元素。
即:int a[5]={4};
int a[?],为数组的首地址;"?"为小于10的数,即为元素的地址。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-24
展开全部
不对,数组的地址等于首元素的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳阳百宝箱
2013-12-24 · 超过33用户采纳过TA的回答
知道答主
回答量:169
采纳率:66%
帮助的人:46.2万
展开全部
说的有点乱呢
数组指针:他是一个指针,指向一个数组;
指针数组:他是一个数组,数组存放的元素是指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式