初始化动态分配的整数
Initializing Dynamically allocated integer
我想动态创建的变量必须单独初始化,而不是在分配时初始化。为什么下面的代码行不编译?
为什么我在 'p'".
之前收到错误消息“expected ')'
*(int *p = malloc(sizeof(int))) = 23;
|
定义int *p
不能出现在表达式中,这是一个语法错误。您必须使用定义和单独的表达式来初始化内容:
int *p = malloc(sizeof(int));
*p = 23;
或
int *p;
*(p = malloc(sizeof(int))) = 23;
请注意,在内存分配失败的情况下,上述两种形式都有未定义的行为。
这个
int *p = malloc(sizeof(int))
是变量p
的声明。
您不能像表达式一样使用声明。
所以你需要拆分这条线
*(int *p = malloc(sizeof(int))) = 23;
两行如
int *p = malloc(sizeof(int));
和
*p = 23;
另一种方法是先声明变量p
int *p;
然后在表达式中使用声明的变量
*( p = malloc( sizeof( int ) ) ) = 23;
我想动态创建的变量必须单独初始化,而不是在分配时初始化。为什么下面的代码行不编译? 为什么我在 'p'".
之前收到错误消息“expected ')'*(int *p = malloc(sizeof(int))) = 23;
|
定义int *p
不能出现在表达式中,这是一个语法错误。您必须使用定义和单独的表达式来初始化内容:
int *p = malloc(sizeof(int));
*p = 23;
或
int *p;
*(p = malloc(sizeof(int))) = 23;
请注意,在内存分配失败的情况下,上述两种形式都有未定义的行为。
这个
int *p = malloc(sizeof(int))
是变量p
的声明。
您不能像表达式一样使用声明。
所以你需要拆分这条线
*(int *p = malloc(sizeof(int))) = 23;
两行如
int *p = malloc(sizeof(int));
和
*p = 23;
另一种方法是先声明变量p
int *p;
然后在表达式中使用声明的变量
*( p = malloc( sizeof( int ) ) ) = 23;