楼主:
XX124188 (kinger)
2014-08-28 03:26:00※ 引述《kdok123 (小天)》之铭言:
: 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的意思...
: 有人可以帮我解说吗??
: 感谢!
请问为什么会前进5个int@@?
作者: sadanlu (孤冬) 2014-08-28 10:32:00
因为第二个a指标指向阵列名称, a + 1就会指向下一个阵列名称, 然后因为转型成int指标, ptr - 1就变成第一个阵列的最后一个元素