一个地址如何存储多个值?

roc*_*cko 3 c pointers

问题在标题中给出:我不知道为什么会发生这种情况.有人能告诉我这些技巧是如何运作的.

这是我的代码:

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

Mat*_*Mat 6

只存储一个值.

第二个printf获取该char地址的第一个数据,将其提升int并打印结果.第一个打印整体int.

(320 == 256 + 64,或0x140 == 0x01 0x40)


SON*_*C3D 5

实际数据0x7fffc068708c0x00000140.

这是小数点的320.

但是如果你通过它访问它ptr =( char *)&a;,那么你只能得到它0x40.

这是十进制的64.