[问题] 一个reference的问题

楼主: kdok123 (小天)   2014-08-28 00:50:07
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d",*(ptr-1));
输出是5
int a[5]={1,2,3,4,5};
int *ptr=(int *)(a+1);
printf("%d",*(ptr-1));
输出是1
我能理解第二个例子,可是第一个例子是什么意思?
我尝试把a和&a都印了出来,发现两个位址是一样的
a+1和&a+1分别和a及&a的位址差距,一个是4一个是20(4*5)
可以理解是跟矩阵大小有关
但还是不理解&a+1的意思...
有人可以帮我解说吗??
感谢!
作者: purpose (秀才遇到肥宅兵)   2014-08-28 01:24:00
例子1里的 &a 资料结构是 int (*pointer)[5],也就是指向int [5] 阵列的指标,这样型态的指标做 + 1,就会前进五个 int,所以位址就跑到 a + 5 去了

Links booklink

Contact Us: admin [ a t ] ucptt.com