C语言基础篇 (二十一)详解void类型


编程语言分:强类型语言和弱类型语言。

强类型语言 中所有的变量都有自己固定的类型,这个类型有固定的内存占用,有固定的解析方法。

弱类型语言 中没有类型的概念,所有变量全都是一个类型(都是字符串),程序在用的时候再根据需要来处理变量。

注:C语言属于强类型语言


数据类型的本质含义

1、数据类型的本质就决定 变量的内存占用数,和内存的解析方法。

2、C语言中变量必须有确定的数据类型 ,如果一个变量没有确定的类型,会导致编译器无法解析这个变量对应的内存。(不可能没有类型的变量)

3、C语言中可以有没有类型的内存。 在内存还没有和具体的变量相绑定之前,内存就可以没有类型。实际上内存就是没有类型的,内存只是因为和具体变量相关联后才有确定的类型(内存自身是不知道的,但是编译器直到。程序在使用这个内存时知道类型,就会按照类型的含义去进行内存的读写)


void类型的本质

void类型含义是:不知道类型,不确定类型,还没确定类型。

void a;
解析: a是一个变量,而且a肯定有确定的类型,只是目前还不确定a的类型,所以标记为void。


为什么需要void类型

1、描述一段还没有具体使用的内存时需要使用void类型

2、应用:void *malloc(…)
malloc函数向系统堆管理器申请一段内存给当前程序使用,malloc返回的是一个指针,这个指针指向申请的那段内存空间。malloc刚申请的内存还没用来存储数据,malloc函数也无法预知将来会用来存放什么类型变量,无法返回具体类型的指针。因此使用void *类型告诉外面申请到一段未确定类型的干净内存。

3、void *类型最终会被强制转为确定的类型 (强制类型转换)

4、void类型使用时一般都是void *类型指针表示的内存;void类型来修饰变量是无意义的。


版权声明:本文为weixin_43564241原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。