2016-02-02 2 views
6

は、だから私は、構造体を与えられましたか?struct内のポインタへのポインタは何を意味しますか?</p> <pre><code>struct Xxx { struct Yyy{...}; Yyy **yyys; // matrix of yyys }; </code></pre> <p>私は、ポインタへのポインタが行列に関連しているかについて混乱しています:

新しいYyyと新しいXxxを初期化するにはどうすればよいですか?

+0

は、2次元配列と考えてください。したがって、最初のポインタで列を作成し、2番目の列を行に使うことができます。 – sreisman

答えて

3

第1レベルのポインタはポインタの配列を指し、各第2レベルのポインタはYyyの配列を指す。

次のように彼らを設定することができます。

struct Yyy **makeMatrix(int rows, int cols) 
{ 
    int i; 
    struct Yyy **result = malloc(rows*sizeof(struct Yyy *)); 
    for (i = 0; i < rows; i++) { 
     result[i] = malloc(cols*sizeof(struct Yyy)); 
    } 
    return result; 
} 
+0

結果 '[i] [j]'はyyyを指していますか?なぜ構造体ポインタに[x] [y]を使用することが可能ですか? – GzAndy

+0

@GzAndyいいえ、 'result [i] [j]' *は '' Yyy'です。各配列インデックスはポインタを逆参照しています。 – dbush

関連する問題