为什么需要空指针,只要可以将任何指针类型转换为任何指针类型,即:
char b = 5;
int*a = (int*)&b;//both upcasting或
int b = 10;
char*a = (char*)b;//and downcasting are allowed另外,为什么在使用malloc/calloc/realloc时不需要强制转换?
发布于 2021-02-04 02:41:01
void指针对于创建通用API非常有用。您可能会想到qsort函数,它可以用于对任何类型的数组进行排序。如果API不知道指针的具体类型,则可以使用void指针。
void qsort(
void *base,
size_t number,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);关于分配函数,这是一回事。C运行时不知道有效对象的类型。但这并不是一个问题,因为用户可以使用通用指针void。
因此,void指针被认为是泛型指针,对于多态性非常有用,这就是为什么C语言使转换为void是可选的。
发布于 2021-02-04 02:44:53
“为什么需要空指针,只要一个人可以转换任何指针类型”。
然后,alloc函数必须使用公共分母,如char。但是,如果我们真的需要什么,就会很困惑。"void“的意思是”一堆字节“。
https://stackoverflow.com/questions/66038594
复制相似问题