4

Cで配列へのポインタを正しく初期化するにはどうすればよいですか

これが私のコードです

int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */

どうすればこの警告を取り除くことができますか?

4

4 に答える 4

6
  1. 配列へのポインターを正しく宣言します。

    int (*data)[10];
    
  2. 配列へのポインターを割り当てます。

    int a[10];
    data = &a;
    
于 2013-04-24T13:56:00.333 に答える
2

あなたの括弧は間違っていると思います。必要なもの:

int (*data)[10];

これらのことについては、 cdecl.orgを使用してヘルプが得られることに注意してください。

元のコードの場合、次のように書かれています:

データを int へのポインタの配列 10 として宣言します

私の場合、それは言います:

data を int の配列 10 へのポインタとして宣言する

于 2013-04-24T13:56:35.347 に答える
1

変数dataはポインターの配列であり、それに単一のポインターを割り当てようとします。配列へのポインターとして宣言する場合dataは、括弧を再配置する必要があります。

int (*data)[10];

時計回り/らせんの法則について読むことをお勧めします。

于 2013-04-24T13:55:58.290 に答える
-1
int **data;
int a[10];
data = &a;

他の提案どおりにデータを定義できますがint (*date)[10];
、それをダブルポインターとして使用すると、その配列のサイズを10から他のサイズに変更したい日に、より多くの交霊会が行われると思います!

于 2013-04-24T13:55:42.343 に答える