如何为数组指针动态分配内存?
(*p)[4]
int main()
{
int (*p)[4];
int i;
for (i=0;i<4;i++)
(p)[i]=(int*)malloc(4);
printf("a");
return 0;
}
在 code::blocks
上,它说:
error: incompatible types when assigning to type 'int[4]' from type 'int *'|
最佳答案
您将一个指向整数数组的指针(您的声明)与一个整数指针数组(赋值)混合在一起。您可以将声明更改为:
int *p[4];
在这种情况下,您的作业将起作用。或者,您可以简单地删除 malloc,因为您的声明已经分配了四个整数。但是,如果您希望将整数作为自动整数,则声明如下时代码将更具可读性:
int p[4];
因为这基本上是一回事。如果您稍后想要一个指向整数数组的指针,您可以只传入 &p。
关于c - 使用数组指针的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729077/