私は、行と列whoses要素のインデックスを与える関数を記述しようとしているが0である関数のパラメータとしての行列を渡すが、それをコンパイル時に「エラー:配列タイプに不完全な要素タイプがあります」というエラーが表示されます。 私はまた、行列をグローバルに宣言し、ポインタを与えようとしました。しかし、それは私のためには機能しません。 これで私は行列をCの関数に渡すことができます。私は機能</p> <pre><code>void make_zero(int matrix[][],int row,int col) { int row, col; int i,j; for(i=0;i<row;i++) { for(j=0;j<col;j++) { if(matrix[i][j]==0){ printf("%d %dn", i, j); } } } </code></pre> <p>を使用してみました
答えて
は、あなたがこのようint matrix[10][10];
を宣言した場合、この
void make_zero(int row, int col, int matrix[row][col])
{
int i,j;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
if(matrix[i][j]==0)
printf("%d %d\n",i,j);
}
}
Cの多次元配列は、最外の値を除いて長さを知る必要があるという問題があります。
void make_zero(void* _matrix,int row,int col)
{
int i,j;
int (*matrix)[col] = _matrix;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
if(matrix[i][j]==0){
printf("%d %d\n",i,j);
}
}
}
はと仮定してみてください。あなたは何ができるか
は、行列を保持するメモリへのポインタを渡した後、右の型にキャストです
make_zero(matrix,5,5); //function call
void make_zero(int mat[][10],int row,int col) //definition
{
//statements
}
編集:
上記溶液は限り常に渡された実際の配列は、10 の第2次元を持っているよう@ジョナサンレフラーは、私が作った
make_zero(5,5,matrix); //function call
void make_zero(int row, int col, int matrix[row][col]) //definition
{
//statements
}
渡される実際の配列が常に第2次元の10を持つ限り、これは機能します。これはC89で必要だったものです。 VLA(可変長配列)対応のC99は、配列のサポートを強化します。 [回答](http://stackoverflow.com/a/18661858/15168)[haccks](http:// stackoverflow)を参照してください。あなたがまだ宣言していないものを使用することはできないので、引数の改訂された順序に注意してください。 –
@JonathanLefflerご協力いただきありがとうございます。私の答えを変更しました。 – Gangadhar
Matrix as argument to a function in C
を示唆したようにあなたは、このように使用することができます動作しますgccのC11/C99でのこの問題への "究極の" ソリューションこれらのリンクを使用して:
- 1. 代替(I = 0、J = 10; iが<jの、iはj-- ++)パイソン
- 2. for(int i = 0; i <10; ++ i)とfor(int i = 0; i <10; i ++)は同じものを返しますか?
- 3. アサーション失敗<0 <= i && i < <int> vv.size <>>未知関数、ファイルsrc \ matrix.cpp、行912
- 4. Java For Loop、なぜJ <I?
- 5. Java:M [i] [j] =(int)i/jの2次元配列の和
- 6. VueJS:(I = 0; iのxと<;私は++)のため
- 7. カスタムコンパレータ<int型、ペア<int, int>>
- 8. 私(int i = 0; i <8; i ++、data >> = 1)について説明できますか?
- 9. のIntelliJ - IntelliJの</p> <pre><code>public static void main(String[] args) { int i = 0; if (i <= 2) { System.out.println("ok"); } } </code></pre> <p>上の条件I> = 2 iは知られている
- 10. ベクトル<int> v(istream_iterator <int>(cin)、istream_iterator <int>());
- 11. メモリアドレスは整数型で格納できますか?</p> <pre><code>int i; int j = &i; </code></pre> <p>私たちは<code>int* j = &i</code>のようなポインタを使用することによってそれを行うことができます知っているが、私はいかなるがあるかどうかを知りたい:
- 12. (I = 1をint型; I =サイズ<; I ++の)ため `正しく翻訳` Rで(場合 `サイズ<1 ')
- 13. エラー: '演算子[]'に一致しません(オペランドの種類は 'std :: list <std :: pair <int, int> *'および 'std :: pair <int, int>')
- 14. intを0に初期化するかどうかを指定します。私は、彼らがJavaでは</p> <pre><code>protected int mPaddingRight = 0; protected int mPaddingLeft = 0; protected int mPaddingTop; protected int mPaddingBottom; </code></pre> <p>として4つの変数を定義する参照アンドロイドのソースコードで
- 15. `1 << 32`と` int i = 32;なぜですか? 1 << i`は別の結果を表示しますか?バグか機能ですか?
- 16. 私はこのコード</p> <pre><code>#define pii pair<int, int> #define pip pair<int, pii> ... vector<pip> graph; graph[i] = pip(c, pii(u,v)); </code></pre> <p>に遭遇しました
- 17. for forループ... for(i = 0; i <10; i - )s = s + i;
- 18. j <= iのネストされたforループの時間複雑度
- 19. 'System.Collections.Generic.Dictionary <int型、System.Collections.Generic.Dictionary <string,int>> .Dictionary(int型)' の最良のオーバーロードされたメソッドの試合
- 20. matplotlibのプロット行列Iは、<code>z[i,j] = f(x[i], y[j])</code></p> <p>その二つのベクトル<code>x</code>と<code>y</code>及びマトリックスを有する
- 21. img in bootstrap col/row
- 22. AVXスカラー演算は、それがバインドされ、メモリ帯域幅となるように、私は、次の簡単な関数が非常に大きな配列を持つ</p> <pre><code>void mul(double *a, double *b) { for (int i = 0; i<N; i++) a[i] *= b[i]; } </code></pre> <p>をテスト
- 23. 読み取り専用ディクショナリ<int、List <int>>
- 24. ベクトル<vector<int>を使用しようとしました
- 25. メモリ効率の良いマップ<pair <int,int>、set <int>>代替
- 26. ベクトル<pair <int、pair <int,int> >> Pythonのデータ構造
- 27. ARMA :: rowvec ::ベクトル<int>
- 28. <Int> == <String>
- 29. unique_ptr <int[]>またはベクター<int>?
- 30. 与えられたコードで誰かがこのコードスニペットを私に説明してください(int i = 0; i <len; i ++)count [str [i]] ++;
マトリックスを宣言/記入するコードを投稿してください。 –
'matrix [i] [j]'ではなく 'i'と' j'を実際に印刷する必要があります。あなたはすでに値が0であることを知っています。 –