A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

是不是讲如果数组名是sa, 该数组的内存地址里就包含sa的意思?

7 个回复

倒序浏览
数组名是个指针常量,它的值就是数组首个元素的内存地址
回复 使用道具 举报
谢谢,是我理解错了,是数组名的地址和该数组的首元素地址一样
回复 使用道具 举报
应该不是啊!数组名指向的首个元素的地址,数组元素的分配地址是从小到大的。
回复 使用道具 举报
不是,是数组名指向本数组所分配内存地址的首地址,相当于指针
回复 使用道具 举报
数组名相当于数组第一个数的地址

回复 使用道具 举报
肥柚๑ 发表于 2014-7-4 19:48
数组名相当于数组第一个数的地址

也是此数组的地址
回复 使用道具 举报
定义数组时,系统将按照数组类型和个数分配一段连续的存储空间来存储数组元素,如int a[3]占据了连续的6字节存储空间(在16位编译器环境下,一个int类型占用2个字节)。要注意的是,数组名代表着整个数组的地址,也就是数组的起始地址

注意:其实a不算是变量,是个常量,它代表着数组的地址。上图把a放到变量一栏是为了方便大家理解数组结构。

数组a的地址是ffc1,a[0]的地址是ffc1,a[1]的地址是ffc3,a[2]的地址是ffc5。因此a == &a[0],即第一个元素的地址就是整个数组的地址


  1. //运行一下试试
  2. int sa[] = {1,2,3,4,5};
  3. if(sa == &sa[0]){
  4.   printf("数组名代表整个数组的地址,也就是数组首地址。");
  5. }else{
  6.   printf("数组名并不代表整个数组的地址。")
  7. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马