2

この警告が私のアプリをクラッシュさせていると思います。iOSアプリにObjective-cを使用しています。Xcodeはスタックトレースなどを提供しません。役に立たなかった。

私はこの割り当てをグローバル変数として持っています:

int search_positions[4][6][2] = {{{0,-2},{0,1},{1,-1},{-1,-1},{1,0},{-1,0}}, //UP
    {{-2,0},{1,0},{-1,1},{-1,-1},{0,1},{0,-1}}, //LEFT
    {{0,2},{0,-1},{1,1},{-1,1},{1,0},{-1,0}}, //DOWN
    {{2,0},{-1,0},{1,1},{1,-1},{0,1},{0,-1}} //RIGHT 
};

したがって、search_positionsは、整数ポインターへのポインターへのポインターではないでしょうか。

なぜこれが「互換性のないポインタからの初期化」を与えるのですか?

int ** these_search_positions = search_positions[current_orientation];

確かに、これは、current_orientationによってオフセットされた、配列から整数ポインターへのポインターを取得しますか?

私がここで欠けているものは何ですか?私は今までにポインタを知っていると思いました。:(

ありがとうございました。

4

2 に答える 2

4

search_positions[current_orientation]タイプではありませんint**; タイプint[6][2]です。 search_positionsポインタではありません。それは配列です。

配列のアドレスを取得するsearch_positions[current_orientation]と、へのポインタは次のようになります。int(*)[6][2]

int (*these_search_positions)[6][2] = &search_positions[current_orientation];

またはint(*)[2]、配列のアドレスを取得せず、代わりに配列からポインタへの変換を実行させる場合は、次のように入力します。

int (*these_search_positions)[2] = search_positions[current_orientation];
于 2010-12-28T17:08:06.137 に答える
1

ポインターは配列ではなく、配列はポインターではありません

search_positions'2の6つの配列の4つの配列の配列'として定義されますint。これによりsearch_positions[current_orientation]、「2の6つの配列の配列」が作成されintます。この配列は暗黙的にポインターに変換できますが、それでは2 s( )の
配列へのポインターしか得られません。これは、使用していた「ポインタからポインタへ」とは異なるタイプであり、2つの間に適切な変換はありません。intint (*)[2]int

問題を克服するために、あなたは次のように宣言することができthese_search_positionsます

int (*these_search_positions)[2] = search_positions[current_orientation];
于 2010-12-28T17:18:31.050 に答える