C语言指针操作:数组地址与指针偏移

代码示例:

int main()
{
int a[5] = {1,2,3,4,5};
int *p = (int *)(&a + 1);
printf('first_data =%d, second data = %d\r\n',*(a+1), *(p-1));
}

运行结果为:

first_data = 2, second data = 5

解析:

  • 首先,数组 a 中有 5 个元素,分别为 1、2、3、4、5。
  • 接着,&a 表示整个数组 a 的地址,即 a 的首地址。
  • 因此,&a + 1 就表示 a 数组的下一个地址,即 a 数组后面的一个地址。
  • p 是一个指向整型的指针,赋值为 &a + 1,即 p 指向 a 数组后面的地址。
  • 在输出语句中,*(a+1) 表示数组 a 的第二个元素,即 2。
  • *(p-1) 表示 p 指向的地址的前一个地址所存储的值,即 a 数组的最后一个元素,即 5。

因此,输出结果为:first_data = 2, second data = 5

本文通过一个简单的C语言代码示例,解释了指针指向数组地址后偏移的操作原理,并分析了代码的运行结果。希望能够帮助读者更好地理解指针操作在C语言中的应用。

C语言指针操作:数组地址与指针偏移

原文地址: https://www.cveoy.top/t/topic/lKPE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录