使用malloc动态分配内存,我在尝试用cygwin编译时收到一个错误
我试图为一个3×5的二维数组分配内存。编译此代码时,我在cygwin终端中收到以下错误:使用malloc动态分配内存,我在尝试用cygwin编译时收到一个错误,c,C,我试图为一个3×5的二维数组分配内存。编译此代码时,我在cygwin终端中收到以下错误: 2darraymalloc.c:在函数“main”中: 2darraymalloc.c:7:9:警告:内置函数“malloc”a[i]=malloc(sizeof(int)*5)的隐式声明不兼容; #包括 void main(){ int*a[3],i,j; 对于(i=0;i
2darraymalloc.c:在函数“main”中:
2darraymalloc.c:7:9:警告:内置函数“malloc”a[i]=malloc(sizeof(int)*5)的隐式声明不兼容;
#包括
void main(){
int*a[3],i,j;
对于(i=0;i<3;i++){
a[i]=malloc(sizeof(int)*5);
}
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
a[i][j]=i+2*j;
}
}
printf(“%d”,*a[2]);
}
您需要包括stdlib.h
,还必须始终检查malloc()
是否返回了有效指针,如果出现错误,它将返回NULL
,并且main()
应返回int
,main()
的有效签名可能是int main(void)
始终启用编译警告,将其添加到gcc调用中
gcc-Wall-Wextra-Werror-o我的程序名my source.c
在C中,默认情况下,假定没有定义原型的函数返回int
。由于您没有包含stdlib.h,因此它未声明malloc()
,因此假定返回int
。语句a[i]=malloc(…)
左侧有一个int指针,右侧有一个int-因此会显示错误消息。谢谢,#include解决了我的问题problem@Michael我知道,这就是我告诉你添加它的原因。我只是想让你知道它只是stdlib.h,而不是主要功能。可以使用void main()而不返回anything@Michale不,不是。请通过做研究来尊重我所说的。使用void main()
,而不是使用您正在使用的编译器是不正确的。请启用编译器警告,您将看到。如果您打算忽略警告,请不要编写c代码。简单。。不管怎样,我都感谢您的帮助(这也包含了您问题的解决方案)。