Jacksturdy 发表于 2020-10-3 16:19:46

有关数组指针的问题

本帖最后由 Jacksturdy 于 2020-10-3 16:25 编辑

在这段代码中&array + 1为什么小甲鱼说&array + 1 指向的就是整个数组最后的位置(第二个 array 数组的起始位置)
按理说不应该是&array获取地址后将地址的数据加1吗,怎么就直接说是指向整个数组的最后的位置了呢?


#include <stdio.h>

int main()
{
      int array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
      int *p = (int *)(&array + 1);

      printf("%d\n", *(p - 6));

      return 0;
}

zltzlt 发表于 2020-10-3 16:25:51

因为数组元素的类型是 int,所以这里 +1 其实是加了 sizeof(int)*1

Jacksturdy 发表于 2020-10-3 16:27:46

zltzlt 发表于 2020-10-3 16:25
因为数组元素的类型是 int,所以这里 +1 其实是加了 sizeof(int)*1

那我要是想把它的地址加一该怎么加呢?

zltzlt 发表于 2020-10-3 16:28:40

Jacksturdy 发表于 2020-10-3 16:27
那我要是想把它的地址加一该怎么加呢?

地址加一就不是访问到一个 int 整数了

Jacksturdy 发表于 2020-10-3 16:29:56

zltzlt 发表于 2020-10-3 16:28
地址加一就不是访问到一个 int 整数了

也就是说我们不能直接操作地址数据吗
页: [1]
查看完整版本: 有关数组指针的问题