Void变量无关,并且void指针只能通过强制转换来指向。 因此,当我们实际上不知道我们想要指向哪个数据类型和哪个数据类型时,会使用void指针。但什么是void变量?
任何实际的例子?
答案 0 :(得分:1)
在C void
中不能将其视为数据类型,它是一个关键字,用作占位符代替数据类型,以显示实际上没有数据。
例如,考虑函数void f(void);
。这里关键字void用于表示没有传递任何参数和返回值。
但void *ptr;
的含义不同。
这声明了一个指针而没有指定它指向的数据类型。
答案 1 :(得分:1)
没有void变量,但有void指针。 正如其他人已经提到的那样,我想提醒你在使用void指针之前键入cast。
float generic_add(void *n1, void *n2){
return *((int *) n1) + *((float *) n2);
}
答案 2 :(得分:0)
void指针对于内存分配非常有用。尝试编写自己的malloc以了解无效*。
答案 3 :(得分:0)
没有void
变量,正如Marko Topolnik在他的评论中所述。
Void
指针指向未指定的内容。还使用关键字(以及在C#和其他语言中)来标记不返回值的方法。所以我想你在想:
void method();
返回void
类型的内容,但实际上并非如此。它没有返回任何东西。
答案 4 :(得分:0)
它们在通用界面中非常有用,例如经典qsort
。
void
qsort(void *base, size_t nel, size_t width,
int (*compar)(const void *, const void *));
http://www.manpagez.com/man/3/qsort/
void
返回类型将此标识为过程而不是函数,因为它根本不返回任何数据(任何类型)。 void *
可以指向任何内容,但compar
函数必须适当地转换它们才能使用它们。