[過去ログ] スレを勃てるまでもないC/C++の質問はここで 21 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
980
(3): 2014/05/11(日)16:45 ID:bK9D/oLg(1/2) AAS
FAQかもしれませんが、ググっても良く分りませんでした。
二次元配列を引数に持つ関数を作りたい場合、
以下のような感じにしたいのですが、これではエラーします。
最もお勧めの書き方を教えてください。
int func1(int **array, int rows, int cols)
{
int sum = 0;
for (int r = 0; r<rows; r++){
for (int c = 0; c<cols; c++){
sum += array[r][c];
}
}
return sum;
}

int _tmain(int argc, _TCHAR* argv[])
{
const int rows = 5;
const int cols = 3;
int array[rows][cols];
for (int r = 0; r<rows; r++){
for (int c = 0; c<cols; c++){
array[r][c] = r * 10 + c;
}
}
sum = func1(array, rows, cols);
printf("sum=%d\n", sum);
return 0;
}
982
(1): 2014/05/11(日)17:29 ID:NXvs+Rfo(2/2) AAS
>>980
外部リンク:ideone.com
983
(2): 2014/05/11(日)18:04 ID:HBJbY+fy(2/2) AAS
>>980
2次元配列はポインタのポインタではない。
1次元配列で長さをcols*rowsにしてrow*rows+colまたはcol*cols+rowでアクセスするとかが定番、かな。
985
(3): ◆QZaw55cn4c 2014/05/11(日)22:27 ID:VWJDXhYj(1) AAS
>>980
可変長な二次元の配列をそのまま渡すことはできない、C99 でも。
malloc() か alloca() を使うのが定番だと思う
alloca() 版:外部リンク:ideone.com
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s