C语言 使用 malloc 的类型重合



我有一个关于malloc函数的问题,如以下示例所示:

char *block = malloc(1024 * sizeof(char));

当左侧的类型是指针的内容 (*) 而右侧的类型是指针时,为什么赋值有效?

在 C 中,在表达式中,*x指的是x指向的事物。在表达式中,*是一个运算符,表示使用指向的对象。

在声明中,*不是运算符。在声明中,您可以通过"显示"表达式的外观来解释您希望事物成为哪种类型,并说明您希望该表达式是什么类型。所以,在char *block中,我们说"我们希望表达*block是一个char"。由此,编译器推断block必须是指向char的指针。

然后,在完整的声明char *block = malloc(1024 * sizeof(char));中,我们说"声明block是指向char的指针,然后初始化blockmalloc的结果。我们正在初始化block,而不是*block

换句话说,赋值表达式将右侧的值分配给左侧的对象。声明将右侧的值分配为左侧声明的事物的初始值。由于声明的特殊语法,左侧声明的东西只是其中的标识符,而不是整个左侧解释为表达式。

相关内容

  • 没有找到相关文章

最新更新