请问一下这步char *p=(char*)&a怎么理解

2025-04-07 15:20:22
推荐回答(2个)
回答1:

  1. &a是int型变量a的地址

  2. (char *)将int型指针(指向4个字节)转换成char型指针(指向一个字节)

  3. char *p声明一个char型指针变量,接受转换的地址。

附注:

#include
int main(){
int a=301;
char *p=(char *)&a;
printf("%d\n%d\n",*++p,*p);
//printf("%d\n%d\n",*p,*++p);
return 0;
}

再附注:

int a=301在内存中二进制存储形式

00000000 000000000 0000‭0001 00101101‬

回答2:

把变量a的地址强制为char *型地址赋给char *型指针p。