将指针强制转换为char指针会导致C中的数据丢失?

ipk*_*iss 4 c pointers

我有以下代码:

#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).