C语言指针操作:数组地址与指针偏移
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语言中的应用。
原文地址: https://www.cveoy.top/t/topic/lKPE 著作权归作者所有。请勿转载和采集!