请教大家一个 C 指针的问题
#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] = %dn", a[0], a[1], a[2], a[3]); c = c + 1; printf("current c points to %dn", *c); c = (int *) ((char *) c + 1); *c = 500; printf("2: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %dn", 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 了?
求赐教,谢谢!