我对使用的malloc函数有疑问,如下例所示:
char *block = malloc(1024 * sizeof(char));
为什么当左边的类型是指针的内容(*)而右边的类型是指针时,赋值是否有效?
答案 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
。
换句话说,赋值表达式将右侧的值赋给左侧的对象。声明将右侧的值指定为左侧声明的事物的初始值。由于声明的特殊语法,左侧声明的东西只是其中的标识符,而不是整个左侧被解释为表达式。