c语言数组,为什么a和&a[0]取值相同?而不是和a[0]取值相同?

如题所述

比如:a[5]这个数组
a就表示数组的首地址,a[0]表示第一个元数,&a[0]表示第一个元数的地址,其实就是首地址,所以a和&a[0]取值相同
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-21
因为数组的首地址也就是数组名,你的数组名为a,则
*
意思是取内容,*a就是
a地址的内容
a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]
望楼主采纳
第2个回答  2012-05-09
a就是一个指针,然后指向a[0],&a[0]代表的不是一个值,而是一个物理地址追问

那么p=a;和p=&a[0];不一样吗?

追答

p是什么类型的?如果是指针,那就是一样的,如果不是,不一样。

本回答被提问者采纳
第3个回答  2012-05-09
&a[0] &是地址符,a[0]表示数组的第一个数 a是数组名,使用数组名系统默认的就是指第一个数。。。追问

那你的意思就是a和a[0]是一样的喽?

c语言数组,为什么a和&a[0]取值相同?而不是和a[0]取值相同?
a就表示数组的首地址,a[0]表示第一个元数,&a[0]表示第一个元数的地址,其实就是首地址,所以a和&a[0]取值相同

c语言数组中*a为什么和a【0】相等
因为数组的首地址也就是数组名,你的数组名为a,则 * 意思是取内容,*a就是 a地址的内容 a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]望楼主采纳

c语言中数组中,为什么a与&a 为什么地址相同
因为他就是这样规定的呀。单独的a 就代表数组第一个元素的地址,

为什么C语言中二维数组的数组名a和*a表示的是同一个值?
而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。在二维数组中,所有元素都是紧密排列的,这样整个数组的首地址,第一行的首地址,和第一个元素的首地址,即a, a[0], &a[0][0] 都是相同的。于是a和*a的值是相同的。

C语言一维数组a和&a的区别
简单的说,a是数组首元素的地址,即a 等于 &a[0]&a是整个数组的首地址。这两个值相同,但代表了不同的意思。如:a+1,偏移的是一个数组元素的大小,而&a+1,偏移的是整个数组的大小

为什么c语言中a[0],*(a+0),&a[0]是相等的?
数组的首地址也是指针,int a[10],int p.这里的a和p都是指针。只不过,数组的首地址不能改变,而p可以指向其他地址。a[0]表示数组a的第一个元素 (a+0)也表示数组的第一个元素 &a[0]表示数组的第一个元素的地址,也就是首地址。

c语言里一个双层数组里a[3][4]里,&a[0] 和 a[0]有什么区别?是不是都...
与该数组的首地址相同。a[3][4]这个二维数组表示的3行4列逻辑排列如下:a[0][0] a[0][1] a[0][2] a[0][3]a[1][0] a[1][1] a[1][2] a[1][3]a[2][0] a[2][1] a[2][2] a[2][3]调试程序的运行结果证明,&a[0]与a[0]的值是一样的。

C语言中,a为一个二维数组,为什么(&a[0])[2] 与(&a[2])[0]输出的结果一...
在C语言中,二维数组a在内存中的存储方式是按行优先(row-major)的方式存储的,也就是说a[0]存放在内存的第一块地址上,紧接着a[1]、a[2]……以此类推。(&a[0])[2] 表示的是a[0]指向的地址再往后偏移2个a[0]大小的位置,即移动了两个一维数组的位置,所以等价于指向a[2]这个一维...

【C语言|数组】数组a、&a、&a[0]、&a[0][0]的区别与联系
数组名a、&a、&a[0]、&a[0][0]的值相同,但数据类型不同。在进行加减运算时,类型差异体现明显。测试代码包含__check传入参数为char *,编译时添加-Wall选项,能触发编译器类型检测,打印变量实际类型。测试程序运行后,结果以Markdown表格形式输出,整理编译输出和程序输出得到测试结果。编译命令和...

c语言中Fun(a)和Fun(&a[0])的区别?
看你的代码,Fun()应该是个函数,a应该是一个数组变量,那这个问题就是数组作为参数传递时的含义。举个例子,对于int a[5]来说 a和&a[0]的类型都是int *,而且2者的值也是一样的,都表示数组的首地址。a和&a[0]步长是一样的,a+1和(&a[0])+1都表示数组第二个元素的地址。所以2者没...

相似回答