Cで配列へのポインタを正しく初期化するにはどうすればよいですか
これが私のコードです
int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */
どうすればこの警告を取り除くことができますか?
配列へのポインターを正しく宣言します。
int (*data)[10];
配列へのポインターを割り当てます。
int a[10];
data = &a;
あなたの括弧は間違っていると思います。必要なもの:
int (*data)[10];
これらのことについては、 cdecl.orgを使用してヘルプが得られることに注意してください。
元のコードの場合、次のように書かれています:
データを int へのポインタの配列 10 として宣言します
私の場合、それは言います:
data を int の配列 10 へのポインタとして宣言する
変数data
はポインターの配列であり、それに単一のポインターを割り当てようとします。配列へのポインターとして宣言する場合data
は、括弧を再配置する必要があります。
int (*data)[10];
時計回り/らせんの法則について読むことをお勧めします。
int **data;
int a[10];
data = &a;
他の提案どおりにデータを定義できますがint (*date)[10];
、それをダブルポインターとして使用すると、その配列のサイズを10から他のサイズに変更したい日に、より多くの交霊会が行われると思います!