在哪种情况下,我们应该首选空指针而不是char指针,反之亦然?
事实上,两者都可以类型转换为任何数据类型。
答案 0 :(得分:6)
void
指针是指向“任何类型”的指针,需要先将其转换为指向实际类型的指针。
指向char
的指针是指向char
的指针,它恰好具有您还可以通过其访问其他类型(的一部分)的属性。
当含义应为“任何类型”(或几种类型中的一种,等等)时,应使用void *
。 (显然)访问char *
或另一类型的单个字节作为原始字节时,应使用char
。
答案 1 :(得分:1)
void指针。例如,malloc()函数返回引用所分配内存的void指针。然后,您可以将指针转换为其他数据类型。
在某些情况下,您需要创建一个指针来仅存储地址。您可以在那里使用空指针。
答案 2 :(得分:-1)
更多关于代码的可读性和结构,我不想看到一个函数需要输入让我们说说指向结构体的指针并通过char *获得它的功能,如果我看到char *是字符串,我首先想到的是纯c术语,字符数组,以null结尾),另一方面带有void *,我被警告将要传递一些通用的东西,一个很好的例子是qsort
函数。