598330983 发表于 2024-3-27 14:04

探讨一个C语言void的问题

发现一个问题,函数可以生命为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 只用于表示函数的返回类型或指针的类型为空

huahuagg 发表于 2024-3-27 20:12

void和变量类型都可以表示函数返回值或者指针类型,但是void不是变量类型,因为它表示不存在,而变量是要存在的。

wahahaheihei 发表于 2024-3-31 13:10

是的,我也纳闷过,其他类型都可以定义变量,为何void不可以。其他类型都可以定义函数喝指针,void也可以啊。我也很奇怪。

b5z1giu 发表于 2024-4-2 14:31

在C语言中,void是一种特殊的类型,用于表示"无类型"或"无值"

kaif2n9j 发表于 2024-4-2 15:38

void用于表示函数没有返回值。例如,void function(void)表示一个没有返回值的函数

t1ngus4 发表于 2024-4-2 16:46

void指针(void *)是一种通用指针类型,可以指向任何类型的数据

suw12q 发表于 2024-4-2 17:51

一般来说,这种指针通常用于实现通用的指针操作,但不能直接用于访问数据,需要进行类型转换后才能使用

p0gon9y 发表于 2024-4-2 19:04

void并不是用作变量类型的关键字。

vivilyly 发表于 2024-4-2 19:30

当函数没有返回值时,其返回类型被声明为 void。例如,void function(void) 表示 function 函数没有返回值。

cen9ce 发表于 2024-4-2 21:23

在C语言中,变量必须具有明确定义的类型,以便编译器知道在内存中为变量分配多少空间以及如何解释存储在该位置的数据。因此,void不能用作变量的类型

d1ng2x 发表于 2024-4-3 07:12

当你尝试定义 void i; 时,编译器会报错,因为void不是一个有效的变量类型

lix1yr 发表于 2024-4-3 08:24

如果你需要一个不具体类型的指针,你可以使用void指针(void *),但不能将void用作普通变量的类型

q1d0mnx 发表于 2024-4-3 09:38

正常来说,void在C语言中主要用于函数返回类型和指针类型,而不能用作普通变量的类型

su1yirg 发表于 2024-4-3 11:03

一般的话,用指针好像会更方便一些

alvpeg 发表于 2024-4-4 10:37

声明一个void类型的变量时,编译器会报错,因为void类型不能被用来存储实际的数据。

houjiakai 发表于 2024-4-4 12:20

表示指针可以指向任何类型的数据。例如 void *p; 表示 p 是一个无类型指针,可以指向任何类型的数据

tifmill 发表于 2024-4-4 14:35

因为void类型的主要作用是作为函数的返回类型和指针的类型,而不是用于声明变量。如果你想声明一个不包含任何具体数据的变量,可以使用其他类型,如int、char、float等。
页: [1] 2 3
查看完整版本: 探讨一个C语言void的问题