【问题标题】:Why not void is a datatype in C? [duplicate]为什么 void 不是 C 中的数据类型? [复制]
【发布时间】:2013-04-26 17:01:55
【问题描述】:

今天有一个学生来找我问我,先生,我们有intfloatchar 以及 C 语言中的所有数据类型。

当我们写int i 时,这意味着ivariable of type integer 等等float fchar c

同样我们有int *i 表示i is a pointer to an integerfloat *fchar *c 相同。

我们在 C 中也有 void* v;

空指针也称为泛型指针。

他问我,因为我们可以有 void 指针,同样为什么我们不能有 void v(作为数据类型)?

我简直无语了。所以,我请求请帮助我。如何让他明白。

【问题讨论】:

  • 因为 C 已经有 UNIONS 了! typedef union {int d;char c;float f;} Void;

标签: c void


【解决方案1】:

我会这样解释:

在高级语言中,变量表示抽象事物,由语言决定如何以比特的形式实际表示它们,并推动这些比特对这些事物起作用。允许变量表示“无”的概念是有意义的。

C 不是那样的。 C 变量是存储在内存中的实际位集合。它们代表什么取决于程序员。对于 C 程序来说,拥有一个“无”类型的变量是没有意义的——这意味着“不分配内存位”,而且它不知道如何处理它。在 C 中,“int”表示“分配 32 位内存”,“int *”表示“分配足以容纳内存地址的内存,并且当我取消引用它时,一次获取 32 位”。 “void *”的意思是“为一个内存地址分配内存,稍后我会告诉你要从那里取多少位”。

C 中的“void”函数返回类型意味着“从函数返回,但不将任何位传递给调用者”。例如,在 Python 这样的高级语言中,“return None”意味着返回给调用者,并传递给它一些代表“nothing”抽象概念的位集合”,这是另一回事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多