int main() {
int i;
int four_ints[4];
char* c;
for(i=0; i<4; i++) four_ints[i] = 18;
c = (char*)four_ints;
for(i=0; i<4; i++) c[i] = 24;
printf("%x\n", four_ints[2]);
}
因此,如果我这样打印,它只会打印12。
但是如果我将其更改为printf("%x\n", four_ints[11])
突然打印28ac90
为什么会这样做?
答案 0 :(得分:3)
在第二个语句printf("%x\n", four_ints[11])
中,您访问未为您的程序保留的数组位置(int four_ints[4]
)。那就是你无法保证存储在非保留的内存部分。