私は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つの変数を作成し、それらを配列に送信します(私のテストでは、それらが正しいことを確認しました。listはlistです[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