我是 C 新手(但在经历了一些成长的痛苦之后开始喜欢它),但我在发送矩阵时遇到了一些麻烦。我开始在我的主要功能中构建所有东西,并且它起作用了。我创建了这样的列表:int list[sizeOfBuckets][30];
然后添加数据,当我想阅读它时,我做了这样的事情:
int x;
int xx;
for (x=0;x<sizeof(current_list) / sizeof(current_list[0]); x++) {
printf("we are in the list \n");
for (xx=0;xx<sizeof(current_list[x]) / sizeof(current_list[x][0]); xx++) {
printf("item: %i \n", current_list[x][xx]);
}
}
它工作得很好,它会给我矩阵的内容。但现在我想将它发送到一个函数,但我遇到了问题。我做了一些阅读并了解到矩阵与发送数组不同,因为 C 需要事先知道尺寸,但由于我将动态更改,我创建了两个变量来监视两者的大小并将它们发送到数组(在我的测试我验证它们是正确的,列表是列表[2][30]
)。这是我的功能:
void process_list(int **current_list, int num_of_rows, int num_items_in_row) {
printf("hello from function \n");
//test the list
int x;
int xx;
for (x=0;x<num_of_rows; x++) {
printf("we are in the list \n");
for (xx=0;xx<num_items_in_row; xx++) {
printf("item: %i \n", current_list[x][xx]);
}
}
}
它对我不起作用。它只是打印出来we are in the list
,而不是我所期望的实际项目(来自下面的 for 循环)。当我使用 GCC 编译时,我收到以下警告:
./learningC.c: In function ‘main’:
./learningC.c:169: warning: passing argument 1 of ‘process_list’ from incompatible pointer type
我想知道我做错了什么?如果有帮助,我不需要修改数组,我只需要将内容发送到函数,然后我的函数将输出不同的结果。
更新:这是我要发送的矩阵:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 4],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 4],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 2, 4],
这是预期的结果:
hello from function
we are in the list
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 2
item: 2
item: 2
item: 4
we are in the list
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 1
item: 1
item: 2
item: 2
item: 4
we are in the list
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 0
item: 1
item: 2
item: 1
item: 2
item: 4