c - 使用数组指针的动态内存分配

标签 c arrays pointers malloc

如何为数组指针动态分配内存? (*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/

相关文章:

c++ - C/C++ union 和未定义行为

javascript - 从另一个数组中存在的对象数组中删除对象

ruby-on-rails - 如何检查 Mongoid 数组字段是否包含另一个数组中的一个或多个项目?

c - C 中的指针与数组

创建动态数组 ADT

c - av_frame_get_side_data 处的段错误

ruby - 要散列的二维数组

C 结构值重置为 NULL

c - sizeof(&array)返回什么?

c - 我如何在 C 中将其相乘?