#include <stdio.h>
int main(void) {
int a[]={1,2,3,4,5};
int * p=(int *)&a+1;
printf("*(a+1)=%d\n",*(a+1));
printf("*p=%d",*(p-1));-
}
输出为:
*(a+1)=2 *p=5
Explain:
a的类型为int [],&a的类型为 int(*)[],&a+1指向数组的下一行,p为int *,所以指向&a+1(a的第二行)的首地址,p-1则指向a的第一行的最后一个元素
Explored:
a为指向数组的指针,类型为int型,&a为a的地址,为指针数组,指针+1,根据指针不同的类型来判断加的具体数组 (type * p, p+1=p+size(type).
本文通过一个简单的C语言程序示例,详细解释了指针运算的基本原理。包括如何使用指针进行数组元素的访问,以及指针加减运算背后的含义。

被折叠的 条评论
为什么被折叠?



