问题在标题中给出:我不知道为什么会发生这种情况.有人能告诉我这些技巧是如何运作的.
这是我的代码:
#include<stdio.h>
int main(){
int a = 320;
char *ptr;
printf("%p\n",&a);
ptr =( char *)&a;
printf("%p\n",ptr);
printf("%d\n",a);
printf("%d\n",*ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0x7fffc068708c
0x7fffc068708c
320
64
Run Code Online (Sandbox Code Playgroud)
只存储一个值.
第二个printf获取该char地址的第一个数据,将其提升int并打印结果.第一个打印整体int.
(320 == 256 + 64,或0x140 == 0x01 0x40)
实际数据0x7fffc068708c是0x00000140.
这是小数点的320.
但是如果你通过它访问它ptr =( char *)&a;,那么你只能得到它0x40.
这是十进制的64.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |