#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int a[4] = {150, 250, 350, 450};
int * c = a;
printf("1: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n", a[0], a[1], a[2], a[3]);
c = c + 1;
printf("current c points to %d\n", *c);
c = (int *) ((char *) c + 1);
*c = 500;
printf("2: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n", a[0], a[1], a[2], a[3]);
}
输出:
1: a[0] = 150, a[1] = 250, a[2] = 350, a[3] = 450
current c points to 250
2: a[0] = 150, a[1] = 128250, a[2] = 256, a[3] = 450
请教下大家,最后 a[1] 和 a[2] 为什么分别变成 128250 和 256 了?
求赐教,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.