黑马程序员技术交流社区
标题:
关于C语言中数组地址的问题!
[打印本页]
作者:
伍陶陶
时间:
2015-11-17 21:47
标题:
关于C语言中数组地址的问题!
定义一个数组,int arr[3], &arr 和 arr 及arr[0]的问题, &arr+1,是增加一个数组长度的地址值,arr+1 是增加一个int类型长度的值,&arr[0]+1也是增加一个int类型的长度值?这样理解对吗?求大神回答.
作者:
cube川
时间:
2015-11-18 20:52
搞不懂你在描述什么,arr存的是数组的首地址,也是arr[0]的地址,你写的这些意义不大啊
作者:
poxiao
时间:
2015-11-18 21:08
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[3] = {0, 1, 2};
printf("%x %x %x\n", &arr, arr, &arr[0]);
printf("%x %x %x", &arr+1, arr+1, &arr[0]+1);
return 0;
}
复制代码
楼主的理解是正确的,数组名代表的地址其值虽然跟&arr[0]的值一样但是意义不一样,&arr是取整个数组的首地址,相当于一个数组指针,在整个数组的首地址基础上加1就相当于加上这个数组的元素占用的长度。arr + 1在数组的语法中代表的就是相对于起始位置偏移一个位置,&arr[0]+1的意义也是在第一个元素的地址基础上偏移一个存储位。可以用如下的代码验证:
作者:
仰望星空的猪
时间:
2015-11-20 11:34
地址+1 是增加一个该数组类型的字节长度。首先地址之间是连续的。
作者:
AGHM0312
时间:
2015-11-20 22:18
数组名=数组名取地址=数组首字符地址
作者:
IT-capfer
时间:
2015-11-20 22:33
没看懂。。。。。
作者:
石油小硕
时间:
2015-11-21 23:18
差不多就是这样子的吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2