首先,编程语言分为两种,一种为强类型语言,另一种为弱类型语言。其中强类型语言为固定的内存占用与解析方法。弱类型语言为无类型概念,一般为字符串用时再根据需求进行处理。
C语言中几乎所有的变量都有明确的类型,编译器要这个变量的解析方式以及变量大小。从而可以看出,数据类型的作用有两点:变量大小;解析方式。无类型的一个数据,分配不了内存,解析不了数据。
上面说到,C语言是几乎所有数据都有明确的类型,但也存在没有类型的内存,但不能有没有类型的变量。换个说法就是,可以先不绑定内存。实际上纯粹的内存是没有数据类型这一说的,只有当内存与变量相关联(通过编译器关联),也才有了数据类型,也就有了相关的读与写的相关方法。
void类型的本质:不确定类型,不知道类型,数据类型待定,数据后面有类型但现在不着急。当进行描述还未具体使用内存时,类型使用void。
malloc返回的是一段连续内存的头指针,此指针无类型,因为都不知道里面放什么类型的数据,所有不能返回一个具体类型的指针,这是一个不确定类型的空间。
void*不确定,那么就强制类型转换为一个具体的类型去使用。
int *p=(int *)malloc(4);
void*转int*不会报warning,不可以void a =4,因为a没有类型,没有大小,没有相关解析方式。
void类型使用的最多的就是指针。