(void *)0:这是什么演员? [英] (void*)0 : what is this cast?

查看:94
本文介绍了(void *)0:这是什么演员?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好!


以下示例代码来自string.h

展开 | 选择 | 换行 | 行号

解决方案

在C中使用NULL作为值为0的指针。即,空指针。 void *是指向任何类型的指针,因此(void *)0是整数值0到任何类型的指针的转换。


在C ++中不使用NULL。 / blockquote>

除了你注意到的这个例子之外,void *类型在C和C ++中有许多合法用途。


void * type声明一个通用指针变量。由于编译器不知道你打算用这样的变量指出什么,它不会让你取消引用指针。但是,您可以将这样的指针传递给函数。


C程序可以使用void *指针来近似多态和信息隐藏。 C ++可能有更好的方法来实现这些目标。


谢谢你们的答案。


虚空*除了你注意到的这个例子之外,*类型在C和C ++中有许多合法用途。



你能告诉我使用这个的例子或者给我参考自己学习吗?我对如何使用这样的类型作为参数传递感兴趣。在函数中传递这些参数的用法是什么?


请注意我不使用C ++,所以关于C的例子是我的主要兴趣。


再次感谢。


Hello!

The below sample code is from string.h

Expand|Select|Wrap|Line Numbers

解决方案

NULL is used in C as a pointer with a value of 0. That is, a null pointer. void* is a pointer to any type, so (void*)0 is a cast of the integer value 0 to a pointer to any type.

NULL is not used in C++.


The void* type has many legitimate uses in C and C++ beyond this one example that you noted.

The void* type declares a generic pointer variable. Since the compiler doesn''t know what you intend to point at with such a variable, it won''t let you dereference the pointer. However, you can pass such a pointer to and from functions.

A C program can use void* pointers to approximate polymorphism and information hiding. C++ probably has better ways to achieve these goals.


Thank you both for your answers.

The void* type has many legitimate uses in C and C++ beyond this one example that you noted.

Can you please give me examples of using this or give me references to study this by myself? I am interested on how a type like this can be used as parameter passing. And what is the usage of passing such parameters in functions?

Please note that I don''t use C++, so examples on C is my main interest.

Thanks again.


这篇关于(void *)0:这是什么演员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆