問題:
C では、 int* の配列を期待する関数に C スタイルの多次元配列を渡すと、コンパイラ エラー。
理由:
int4 のような多次元配列は、int* 型のポインタに直接変換できません。これが int です。 arr[] は関数内で表します
例:
#include<stdio.h> void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Error in C++ }
C はエラーを報告します:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
解決策:
C と C の両方で、多次元配列を int** として渡すことは無効です。これを効果的に実現するには、次の手法を使用して配列をポインタに変換する必要があります。
注:
コンパイラの警告を無視するか失敗します適切な変換を実装すると、未定義の動作や予測できない結果が発生する可能性があります。
以上が`int` を期待する関数に C スタイルの 2D 配列を渡すことが C で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。