1

のように、ポインタの配列の宣言を強調するために括弧を入れようとすると、不可解な配列が見つかりました(int *) ptr[N];

GCC Cコンパイラは次のように述べています:

error: ptr undeclared (first use in this function).

誰でもエラーの原因を説明できますか?

4

4 に答える 4

3

それは非常に簡単です: 変数ptrは宣言されていません。いいえ、宣言で(int *) ptr[N];なく、配列添字式の型キャストです。

ポインターの配列が必要な場合は、次のようにする必要があります

int *ptr[N];
于 2013-11-05T07:06:15.947 に答える
2

配列のN番目の要素をptr整数ポインターにキャストしています。

エラー自体は、ptr宣言されていないことを示しています。あなたは私の間違いを次のような行を忘れたか削除しました:

int *ptr[123];

については、N通常は次のように定義されている const のようです。

#define N 42
于 2013-11-05T07:06:18.027 に答える
1

コンパイラは ptr[N] をタイプ (int *) にキャストすると思います。

    int a;
    double b;
    b = (double)a;

したがって、(int *)ptr[N] dosen には値が残っており、u は前に ptr を宣言することはありません。次に、gcc コンパイラーは u ptr が宣言されていないことを通知します。

于 2013-11-05T07:12:54.493 に答える
1

多分あなたはこれを行うことができます

typedefine int* INT_PTR;
INT_PTR ptr[N];
于 2013-11-05T07:08:52.183 に答える