C 获取无效的初始化器错误
为什么下面的代码会出现“无效初始值设定项错误”C 获取无效的初始化器错误,c,C,为什么下面的代码会出现“无效初始值设定项错误” #include<stdio.h> #include<malloc.h> int main(){ int i = 2; int j; for(j = i ; j < 20; j++){ char *p[5] = malloc(20 * sizeof(char)); int len = 0; p[0] = 'a'; } retur
#include<stdio.h>
#include<malloc.h>
int main(){
int i = 2;
int j;
for(j = i ; j < 20; j++){
char *p[5] = malloc(20 * sizeof(char));
int len = 0;
p[0] = 'a';
}
return 0;
}
#包括
#包括
int main(){
int i=2;
int j;
对于(j=i;j<20;j++){
char*p[5]=malloc(20*sizeof(char));
int len=0;
p[0]=“a”;
}
返回0;
}
您有一个指针数组,并且只指向它一个指针:
char *p[5] = malloc(20 * sizeof(char));
改用这个:
char *p = malloc(20 * sizeof(char));
如果您确实需要一个指针数组,但只设置其中的第一个指针,那么这应该是您的代码:
char *p[5] = {malloc(20 * sizeof(char))};
(或者,更好的是:char*p[5]={0};p[0]=malloc(20*sizeof(char));
)
如果这是您想要的,您必须以不同的方式指定字母“a”-使用*(p[0])='a'代码>取而代之
此外:您不再释放内存。你应该使用free(p)
这样做,否则您的程序可能会消耗越来越多的内存
对于小程序来说,这是没有问题的,因为操作系统在程序关闭后会释放内存
但这是一种糟糕的做法,也是许多糟糕软件的原因。你想做什么呢???@奥利·查尔斯沃思:对不起,伙计。我会像你在下一篇文章中所说的那样提出问题