使用malloc键入巧合

时间:2018-01-13 13:15:19

标签: c pointers malloc

我对使用的malloc函数有疑问,如下例所示:

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

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

1 个答案:

答案 0 :(得分:2)

在C中,在表达式中,def add_group_permissions(apps, schema_editor): for app_config in apps.get_app_configs(): app_config.models_module = True create_permissions(app_config, apps=apps, verbosity=0) app_config.models_module = None 指的是*x指向的内容。在表达式中,x是一个运算符,意味着使用指向的对象。

在声明中,*不是运营商。在声明中,通过“显示”表达式的外观并说出您希望表达式的类型,解释您希望事物的类型。因此,在*中,我们说“我们希望表达式char *block*block。”从此,编译器推断出char必须是指向block

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

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