打印
[学习资料]

探讨一个C语言void的问题

[复制链接]
2333|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2024-3-27 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现一个问题,函数可以生命为void类型:void function(void)
{

}

指针可以声明为void类型:

void *p;

那么变量为何不可以声明为void类型呢?
如果我定义 void i;
就会报错: variable or field 'i' declared void

这是什么情况呢?
难道void不是作为变量类型使用的关键字吗?
不是类似int char float等关键字使用吗?

使用特权

评论回复
沙发
734774645| | 2024-3-27 15:05 | 只看该作者
在C语言中,void 并不是一个变量类型。void 只用于表示函数的返回类型或指针的类型为空。在C语言中,变量必须具有确定的类型,以便编译器能够分配适当的内存空间和进行类型检查。

因此,你不能定义一个变量的类型为 void。这是因为 void 类型不具有任何大小,无法用于声明变量的大小。实际上,void 类型在C语言中没有具体的意义,仅仅用于表示空值或通用指针类型。

在函数的参数列表中,void 用于表示函数不接受任何参数;在指针类型中,void* 用于表示通用指针,可以指向任何类型的数据;在函数的返回类型中,void 表示函数不返回任何值。

使用特权

评论回复
板凳
734774645| | 2024-3-27 15:05 | 只看该作者
void 在C语言中用于指示函数的返回类型为空,或者作为通用指针类型 void*,也可用于函数参数列表中表示函数不接受任何参数。

使用特权

评论回复
地板
LEDyyds| | 2024-3-27 17:01 | 只看该作者
void 只用于表示函数的返回类型或指针的类型为空

使用特权

评论回复
5
huahuagg| | 2024-3-27 20:12 | 只看该作者
void和变量类型都可以表示函数返回值或者指针类型,但是void不是变量类型,因为它表示不存在,而变量是要存在的。

使用特权

评论回复
6
wahahaheihei| | 2024-3-31 13:10 | 只看该作者
是的,我也纳闷过,其他类型都可以定义变量,为何void不可以。其他类型都可以定义函数喝指针,void也可以啊。我也很奇怪。

使用特权

评论回复
7
b5z1giu| | 2024-4-2 14:31 | 只看该作者
在C语言中,void是一种特殊的类型,用于表示"无类型"或"无值"

使用特权

评论回复
8
kaif2n9j| | 2024-4-2 15:38 | 只看该作者
void用于表示函数没有返回值。例如,void function(void)表示一个没有返回值的函数

使用特权

评论回复
9
t1ngus4| | 2024-4-2 16:46 | 只看该作者
void指针(void *)是一种通用指针类型,可以指向任何类型的数据

使用特权

评论回复
10
suw12q| | 2024-4-2 17:51 | 只看该作者
一般来说,这种指针通常用于实现通用的指针操作,但不能直接用于访问数据,需要进行类型转换后才能使用

使用特权

评论回复
11
p0gon9y| | 2024-4-2 19:04 | 只看该作者
void并不是用作变量类型的关键字。

使用特权

评论回复
12
vivilyly| | 2024-4-2 19:30 | 只看该作者
当函数没有返回值时,其返回类型被声明为 void。例如,void function(void) 表示 function 函数没有返回值。

使用特权

评论回复
13
cen9ce| | 2024-4-2 21:23 | 只看该作者
在C语言中,变量必须具有明确定义的类型,以便编译器知道在内存中为变量分配多少空间以及如何解释存储在该位置的数据。因此,void不能用作变量的类型

使用特权

评论回复
14
d1ng2x| | 2024-4-3 07:12 | 只看该作者
当你尝试定义 void i; 时,编译器会报错,因为void不是一个有效的变量类型

使用特权

评论回复
15
lix1yr| | 2024-4-3 08:24 | 只看该作者
如果你需要一个不具体类型的指针,你可以使用void指针(void *),但不能将void用作普通变量的类型

使用特权

评论回复
16
q1d0mnx| | 2024-4-3 09:38 | 只看该作者
正常来说,void在C语言中主要用于函数返回类型和指针类型,而不能用作普通变量的类型

使用特权

评论回复
17
su1yirg| | 2024-4-3 11:03 | 只看该作者
一般的话,用指针好像会更方便一些

使用特权

评论回复
18
alvpeg| | 2024-4-4 10:37 | 只看该作者
声明一个void类型的变量时,编译器会报错,因为void类型不能被用来存储实际的数据。

使用特权

评论回复
19
houjiakai| | 2024-4-4 12:20 | 只看该作者
表示指针可以指向任何类型的数据。例如 void *p; 表示 p 是一个无类型指针,可以指向任何类型的数据

使用特权

评论回复
20
tifmill| | 2024-4-4 14:35 | 只看该作者
因为void类型的主要作用是作为函数的返回类型和指针的类型,而不是用于声明变量。如果你想声明一个不包含任何具体数据的变量,可以使用其他类型,如int、char、float等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

246

主题

5384

帖子

22

粉丝