Raj*_*esh 2 c malloc expression initialization declaration
我猜动态创建的变量必须单独初始化,而不是在分配时初始化。为什么下面这行代码不能编译?为什么我会在 'p' 之前收到错误消息“预期的 ')'”。
*(int *p = malloc(sizeof(int))) = 23;
|
定义int *p不能出现在表达式中,这是一个语法错误。您必须使用定义和单独的表达式来初始化内容:
int *p = malloc(sizeof(int));
*p = 23;
Run Code Online (Sandbox Code Playgroud)
或者
int *p;
*(p = malloc(sizeof(int))) = 23;
Run Code Online (Sandbox Code Playgroud)
请注意,在内存分配失败的情况下,上述两种形式都有未定义的行为。