TomZz 发表于 2022-7-4 10:50:23

关于数组和指针的关系的理解

本帖最后由 TomZz 于 2022-9-24 13:59 编辑

请教一下大佬我的理解是正确的吗?
// 设array为二维数组。int
// 数组向指针的自动转化会自动降一维,从*(array+i)=array可理解。即如果把array看成一个指针,其类型应为int *
// 数组手动转化为指针维度不变。&array的类型应为int *
// 因而array+1的内存是加了数组子元素的size,&array+1在内存中是加了整个数组的size

以下为我的测试代码
int main() {
        int a = { {1,2},{3,4},{5,6},{7,8} };
        int (*p)[] = &a;        // 第一个下标不填会警告下标不同
        int (*b) = a+1;        // 这里只是声明,没有去访问是不知道其具体内容的,所以调试时会先呈现问号,在访问后会呈现具体内容
        printf("%p %p %d %p %p %p %d %p %p", a, a, a, p, *p, **p, ***p, a + 1, b);
        return 0;
}

结果貌似证明了我的猜想。
数组array的地址为00000077EA0FFA78 ,array+1的地址为00000077EA0FFA80,&array+1的地址00000077EA0FFA98
array+1与array差8个字节即2个int即一个int的size;&array+1与array差32个字节即一个int的size

ExiaGN001 发表于 2022-7-4 20:11:44

事这个样子的(喜

迷路的狍子 发表于 2022-7-5 13:43:18

事这个样子的(喜

突然有个想法,用结构体数组替代二维数组更好?用起指针来也更友善{:10_254:}
页: [1]
查看完整版本: 关于数组和指针的关系的理解