【发布时间】:2017-02-07 09:59:43
【问题描述】:
如何创建指向以下二维数组指针 int **arr 的指针。我正在寻找类似于 int*** arr 及其分配、释放、访问和使用的东西。
int main()
{
int** arr;
int row = 11;
int col = 2;
int i,j;
arr = (int**)malloc(sizeof(int*)*row);
for (i=0; i<row; ++i){
arr[i] = (int*)malloc(sizeof(int)*col);
}
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
arr[i][j] = i;
printf("arr[%d][%d] : %d\n",i,j,arr[i][j]);
}
}
return 0;
}
以前的参考资料:
动态二维数组指针:
C programming initialize 2D array dynamically
指向动态二维数组的指针,但这里的解释是使用 new 关键字,我想使用 malloc 代替:
How to allocate a 2D array of pointers in C++
其他信息:
考虑以下场景:
XYZ* arr[A][B];
“XYZ”是自定义数据类型, “A”和“B”是运行时的动态变量
在这种情况下,我们如何在运行时定义 A & B 并使用 XYZ* 类型访问 arr[A][B] 元素值。
【问题讨论】:
-
对于指向
arr的指针,您需要成为three-star programmer,并且被称为通常不是恭维。 -
什么是“动态数组”?分配在动态内存中的数组还是具有随时可能变化的可变维度的数组?正确答案很大程度上取决于你想要哪一个。
-
如果您只是想动态分配一个二维数组,那么它应该是
int (*arr)[row] = malloc(sizeof(int[col][row]));就是这样。不需要指针对指针的指针... -
为什么你需要一个三星指针?您尝试通过使用解决的实际问题是什么?如果您想要一个动态数组数组(指向指针really isn't),那么您已经拥有了它。为什么需要添加另一个间接级别?
-
请在问题中找到添加的附加信息。
标签: c pointers multidimensional-array