【发布时间】:2020-05-03 14:41:53
【问题描述】:
我有一个需要二维整数数组的函数:
void Add_Binary_To_Matrix(int (*qrMatrix)[21], int *binPtr,
int x, int y, int count, int skipper, int direction)
这个数组是一个一维指针数组,但我为每一行添加了内存(这也使它成为一个二维整数数组,对吧?):
int *qrCopy[currentVersion->height];
for (int i = 0; i < currentVersion->height; i++)
qrCopy[i] = malloc(currentVersion->height * sizeof(int));
所以我尝试了很多方法,但都不起作用:
Add_Binary_To_Matrix((int *)qrCopy, binPtr, 20, 20, 0, 0, 1);
Add_Binary_To_Matrix(qrCopy, binPtr, 20, 20, 0, 0, 1);
Add_Binary_To_Matrix(&((int *)qrCopy[0]), binPtr, 20, 20, 0, 0, 1);
但是像这样传递它似乎不起作用所以我的问题是如何将这个数组传递给函数?
【问题讨论】:
-
你应该描述发生这种情况的上下文——函数是做什么的,在你调用这个函数之前你有什么形式的数据,你可以改变这个函数还是只能改变如何你叫它?这里的主要问题不是容易更改的参数和参数类型,而是数据在内存中的布局方式。参数
qrMatrix是否仅指向一个包含 21 个int的数组,或者可能指向多个数组,在内存中连续布局?
标签: c arrays function pointers