以下代码块有什么问题?

时间:2013-06-27 01:22:26

标签: c

为什么以下代码块不起作用?

int *p1 = malloc(128);

int main(void) {
char *p2 = malloc(128);
}

4 个答案:

答案 0 :(得分:2)

全局变量的初始值设定项必须是常量,因此第一个malloc将导致编译时错误。

答案 1 :(得分:1)

你不能使用malloc来像这样在代码块之外初始化p1,只需在像p2这样的main内部执行它

答案 2 :(得分:1)

您无法在初始化全局变量时调用函数。这是它抱怨的那条线:

int *p1 = malloc(128);

将其更改为NULL,然后在main中将其初始化。

答案 3 :(得分:-2)

1,基本错误是你的main方法必须返回一些int值

int main(void) {
char *p2 = malloc(128);
return 0;
}

或尝试

void main(){
char *p2 = malloc(128);
}

第二,你可能想指定你的指针是什么类型的缓冲区,否则,它将是一个(void *)类型指针,所以我建议你可以尝试:

int *p1 = (int*)malloc(128);
char *p2 = (char*)malloc(128);