我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n = 260;
int *p = &n;
char *pp = (char*)p;
*pp = 0;
printf("n = %d\n", n);
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序的输出放置是n = 256.我可能理解为什么,但我不确定.请问有人能给我一个明确的解释吗?
非常感谢.
sch*_*der 11
的int260(= 256×1 + 4)将看起来像这样在存储器中-注意,这依赖于字节序的机器-也,这是一个32位(4字节)int:
0x04 0x01 0x00 0x00
Run Code Online (Sandbox Code Playgroud)
通过使用char指针,您指向第一个字节并将其更改为0x00,将int更改为256(= 256*1 + 0).