繁体   English   中英

void数据类型和void指针的实际用途是什么?

[英]what is the practical use of void datatype and void pointer?

Void变量无关,而且void指针只能用cast来指向。 因此,当我们实际上不知道我们想要指向哪个数据类型和哪个数据类型时,会使用void指针。 但什么是void变量?

任何实际的例子?

在C中, void不能被视为数据类型,它是一个关键字,用作占位符代替数据类型,以显示实际上没有数据。

例如,考虑函数void f(void); 这里关键字void用于表示没有传递任何参数和返回值。

但是void *ptr; 意义不同。

这声明了一个指针而没有指定它指向的数据类型。

没有void变量,但是有void指针。 正如其他人已经提到的那样,我想提醒你在使用void指针之前键入cast。

float generic_add(void *n1, void *n2){
    return *((int *) n1) + *((float *) n2);
}

当我们不了解确切的数据类型时,void指针对于内存分配非常有用。 尝试编写自己的malloc以获得无效*。

或阅读http://www.cplusplus.com/reference/cstdlib/malloc/

没有void变量,正如Marko Topolnik在他的评论中所述。

在C / C ++中使用Void指针指向未指定的内容。 还使用关键字(以及在C#和其他语言中)来标记不返回值的方法。 所以我想你在想:

void method();

正在返回类型为void东西,但事实并非如此。 它没有返回任何东西。

它们在通用接口中很有用,比如经典的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 * s可以指向任何东西,但是compar函数必须适当地转换它们才能使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM