昨天我们谈了数据类型中的枚举类型,今天我们来谈一谈数据类型中的void类型。

大家看到“void”这个单词,是不是感觉非常熟悉呢,没错,这是一个关键字,我们平时常常会用在定义函数、方法。

但说来惭愧,学C语言那么久,到现在为止,我还没有完全搞懂void的含义,平时只知道使用void来定义一个方法和函数。

在回顾C语言补充内容的时候,我才正式注意到了void这个概念。

void类型的定义

void类型,也叫做无数据类型,换言之,就是没有数据类型。

那么void既然是定义无数据类型的,那么能够像前两天说的“枚举类型”和“基本类型”,应该也能用来定义数据吧。

但我尝试着使用void来定义变量,却发现报错了。

c语言void是什么意思及用法(用C语言讨论数据void类型)(1)

所以,要定义变量的话,还是得给定指定的数据类型才行。

那么,void类型主要是用在什么地方呢?

根据网上查阅的相关资料,void主要是用在对函数返回的限定和对参数返回的限定。

这句话比较难以理解,我看到这句话的时候,我也有点懵圈。

但进行梳理后,也比较好理解了。

就是void类型主要有三种情况,分别是“函数返回为空”、“函数参数为空”、“指针指向void”,但是这三种情况,到目前为止我只能解释前两种,对于第三种情况还略有些不明白,或许需要后续进行一个补充。

c语言void是什么意思及用法(用C语言讨论数据void类型)(2)

函数返回为空

我们可以使用void来定义函数,但对于主函数main来说,使用void main(){}却会发现产生警告,这是因为main函数的返回值是int整数类型,所以要使用int main(){}来作为主方法,两者的主要区别就在于有无返回值。

void fun(){//函数返回为空 //没有return的返回值,这个可以与int定义函数进行一个对比 } int main(){ return 0; }

c语言void是什么意思及用法(用C语言讨论数据void类型)(3)

函数参数为空

int fun1(){//函数参数为空 return 0; } int fun2(void){//函数参数为空 return 0; }

很显然,函数参数为空有两种情况,一种是括号内什么都不添加,而另一种则是添加void。

c语言void是什么意思及用法(用C语言讨论数据void类型)(4)

指针指向void

malloc是内存分配函数,因为指针指向void我不是很明白,所以这里举了一个大家常用的一个内存分配函数的例子,等我再研究研究或许就明白的差不多了呢。

void *malloc( size_t size );//类型为void *的指针代表对象的地址,而不是类型 int main(){ void *m; int *n; m = n; printf("%d",m); }

c语言void是什么意思及用法(用C语言讨论数据void类型)(5)

c语言void是什么意思及用法(用C语言讨论数据void类型)(6)

但显然,这仍然是存在一些问题的,可是这是根据网上的说法来得到的,显然是有问题的。

所以我在基于自己的理解上修改了下代码,也就是根据指针的定义,要使用&这个符号来访问内存地址。

可以发现,这样就是正确的,到目前为止,我就发现void最有效的作用就是不需要强制进行类型转换,可以帮助简便程序。

c语言void是什么意思及用法(用C语言讨论数据void类型)(7)

总结

总的来说,void类型其实我们平时用的比较少,所以对这个类型也没太多概念,今天主要是提及一下,之后若是再遇到了,我会再根据相应的题目写相应的文章来解释的。

,