首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空指针的目的是什么?

空指针的目的是什么?
EN

Stack Overflow用户
提问于 2021-02-04 02:35:36
回答 2查看 91关注 0票数 1

为什么需要空指针,只要可以将任何指针类型转换为任何指针类型,即:

代码语言:javascript
复制
char b = 5; 
int*a = (int*)&b;//both upcasting

代码语言:javascript
复制
int b = 10;
char*a = (char*)b;//and downcasting are allowed

另外,为什么在使用malloc/calloc/realloc时不需要强制转换?

EN

回答 2

Stack Overflow用户

发布于 2021-02-04 02:41:01

void指针对于创建通用API非常有用。您可能会想到qsort函数,它可以用于对任何类型的数组进行排序。如果API不知道指针的具体类型,则可以使用void指针。

代码语言:javascript
复制
void qsort(
   void *base,
   size_t number,
   size_t width,
   int (__cdecl *compare )(const void *, const void *)
);

关于分配函数,这是一回事。C运行时不知道有效对象的类型。但这并不是一个问题,因为用户可以使用通用指针void

因此,void指针被认为是泛型指针,对于多态性非常有用,这就是为什么C语言使转换为void是可选的。

票数 1
EN

Stack Overflow用户

发布于 2021-02-04 02:44:53

“为什么需要空指针,只要一个人可以转换任何指针类型”。

然后,alloc函数必须使用公共分母,如char。但是,如果我们真的需要什么,就会很困惑。"void“的意思是”一堆字节“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66038594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档