今天有一位学生来找我,问我,先生,我们有int
,float
,char
以及C中的所有数据类型。
当我们写int i
时,这意味着i
是variable of type integer
,依此类推float f
和char c
。
同样,我们int *i
表示i is a pointer to an integer
。 float *f
和char *c
相同。
我们在C中也有void* v;
。
void指针也称为通用指针。
他问我,因为我们可以有无效指针,同样为什么我们不能有void v
(作为数据类型)?
我只是说不出话来。所以,我请求帮助我。如何让他理解。
答案 0 :(得分:2)
以下是我将如何解释它:
在更高级别的语言中,变量代表抽象的东西,由语言来决定如何用比特来实际表示它们并推动这些事情来处理这些事情。允许变量表示“无”的概念是有意义的。
C不是那样的。 C变量是存储在存储器中的实际比特集合。他们代表什么取决于程序员。 C程序有一个“无”的变量是没有意义的 - 这意味着“不分配任何内存”,并且它不知道如何处理它。在C中,“int”表示“分配32位内存”,“int *”表示“分配足以保存内存地址的内存,当我取消引用它时,一次获得32位”。 “Void *”表示“为内存地址分配内存,我稍后会告诉你从那里获取多少位”。
C中的“void”函数返回类型表示“从函数返回,但不将任何位传递给调用者”。例如,在像Python这样的高级语言中,“return None”意味着返回调用者,并传递一些代表“无”的抽象概念的位集合,这是另一回事。