内存,类型,指针的关系

  1. 类型

    类型表明这堆二进制数据按照什么类型解析,数据怎么转换显示.

    比如对于char类型:

    • 1个字节
    • 8个bit
    • 值为65的对应的显示字符为A.这是因为根据对应的码表转化为A,在内存中只是一个65的值,找到对应65的图像.
  2. 将一个int存放对应的值,输出的时候按照字符串解析。

    	#include<stdio.h>
    	int main()
    	{
    		int x = 0x414243;
    		printf("%s
    ",(char*)&x);
    		return 0;
    	}
    

    • x在内存中的分布66 65 64 00

      对应字符串 CBA

    这个案例就是告诉内存的数据按照特定的方式解析,就是合法数据,本质是01,但是解析出来的不一样,也就成为了各种各样的数据了。

  3. 将一个结构体按照字符串和int输出。

    	#include<stdio.h>
    	struct T
    	{
    		char a;
    		char b;
    		char c;
    		char d;
    	}test{0x43,0x42,0x41,0x00};
    	int main()
    	{
    		printf("%s %x
    ",(char*)&test,*(int*)&test);
    		return 0;
    	}
    


上面的例子说明内存中的数据看你怎么解析,只要不越界,就没有问题,每个类型都有大小,在规定大小范围内操作,就不会越界,也就不会出错,数据是否有用或可识别,根据解析方式不同而不同,摩斯电码不懂的人也看不懂啊。