【发布时间】:2015-12-20 13:00:22
【问题描述】:
我想直接将值分配给动态分配内存的二维指针数组。但编译器显示 2 个警告和 1 个错误。
第 11 行和第 12 行的 2 个警告:int 的间接级别不同于 整数*。
第 13 行错误:语法错误:'{'
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r , c, rc;
int* pmat1[3][3], pmat2[3][3], pmat3[3][3];
*pmat1[3] = (int*)calloc(3,sizeof(int));
*pmat2[3] = (int*)calloc(3,sizeof(int));
*pmat3[3] = (int*)calloc(3,sizeof(int));
*pmat1[3][3] = { {1,1,1}, {0,0,0}, {2,2,2} };
return 0;
}
我在这里犯了什么错误?
【问题讨论】:
-
请不要强制转换malloc
-
在您的代码中,
pmat2和pmat3是二维整数数组。可能您想以这种方式声明它们:int* pmat1[3][3], *pmat2[3][3], *pmat3[3][3]. -
您是在转换 calloc 是因为您收到一些警告,在这种情况下您使用了错误的编译器,或者您转换 calloc 因为您不知道 calloc(及其家族)的返回类型是 void * ?
-
您想要一个指向数组的指针的二维数组、指向二维数组的指针还是指向二维数组的指针数组?这些都是非常不同的东西,您的代码似乎想要将它们全部结合起来。
-
int* x, y, z;等价于int* x; int y; int z;。
标签: c arrays pointers multidimensional-array dynamic-memory-allocation