私はCに新しいですし、コードの関連部分があるwarning.The私は初期互換性のないponiterタイプを取得していますなぜ私は、それを把握することはできません。コンパイラの警告:初期化、互換性のないポインタ型
struct a {
int address;
B * apples[8];
} A;
struct b {
int color;
} B;
私はa_listと呼ばれる配列を持っています。私は現在やっていることは次のとおりです。
B *b_list = a_list[i].apples; // i being an index in for loop
b_list[6].color = 0;
以上が正常に動作しますが、警告スロー:私の推論は、私は
B ** b_list = a_list[i].apples; // as it is pointer to pointer.
So now b_list basically points to a pointer which points to an array of 6, yea?
So: (*b_list)[6].color // However this causes segmentation fault.
をやるべきということである、それを修正するために
Initialization from incompatible pointer type.
を
構造体AがB *りんご[8]ではなく、Bりんご[8]を持っていたときも正しく動作していました。ただし、このソリューションを使用しても、作成された場所以外の機能の変更は維持されません。
アドバイスをしてください。
上記の両方がセグメンテーション違反を引き起こします。それはいくつかのブロックが割り当てられていないからですか? – Catie
@Catie:配列に 'B'をそれぞれ割り当てましたか? –