int a[10]; printf("%x %x\n", a, &a); 打印出的值为什么一样

如题所述

我觉得这个问题初学者一般都不明白,楼上的回答也不完全正确。

我补充一些吧(虽然不知道你能理解多少),全部理解需要你学很多计算机专业的课程。

首先,打印出的值相同,不代表东西相同。

a是数组名,它的值是数组的起始地址

&a是取出数组的地址,它是一个值

&a[0]是数组第一个元素的地址,和&a很类似

考虑一下图片里的程序,再想一想。

不明白的可以继续问,你也最好告诉我,你学习过的基础知识。毕竟你学过的东西不同,理解的能力就不同。和这个相关的课程:形式语言、算法和数据结构、高级语言程序设计、编译原理、操作系统、汇编。只有这些都深入理解,才可能比较深刻的理解C语言里面的为什么。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-17
数组是比较特殊的。a 其实就是指向数组 a 第一个元素的地址的指针,它的地址其实就是数组首地址,而 &a 跟 &a[0] 是没分别的,一个意思。所以不单上面两个是相同的 a,&a,&a[0] 都是一样的
第2个回答  2012-05-15
数组名就是数组的首地址。
相似回答