一段代码对指针的理解
#include <stdio.h>
int main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a+1);
//int **p =&a;
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}
上面代码输出结果是2,5。ptr是双重指针了,理解为一个二维数组,ptr应该就是第一行a的下一行起始地址。具体理解图示如:
还有如下的题目:
int c = (int)(((int*)0)+4); //c=16