2012-03-19 25 views
3

Cで文字配列へのポインタを宣言するにはどうすればよいですか?Cで文字配列へのポインタを宣言するには?

+0

私のような不機嫌な何かが「割り当てられた章を読んで」と言うように誘惑よ...いずれにせよ、あなたはより多くの情報が必要:言語を?全体的な目的は?コンテキスト?これはこのサイトの質問の期待値を満たしていないようです。 – corsiKa

+2

本当に配列へのポインタが必要ですか?または、配列の最初の要素へのポインタ? [cdecl](http://cdecl.org/)について知っていますか? –

+0

Carlのポイント上でビットを展開するには:配列へのポインタは可能ですが、まれに(まあまあまれではありません)必要とされることはほとんどありません。ほとんどの場合、(しばしばconst)charへのポインタが必要です。 –

答えて

10

私は部品でこの答えを与えるだろうと思います:

char (*x)[10]; 

レッツ・ブレイク:

  1. はここchar S(私は10の要素からなる配列を仮定)の配列へのポインタです基礎からそれダウン:

    x 
    

    はポインタです:

    秒の

    (*x)[10] 
    

    :配列へ

    *x 
    

    char (*x)[10] 
    
  2. しかし、あなたが望む、あなたが本当に配列へのポインタをしたくないほとんどの時間配列の最初の要素へのポインタ。その場合:

    char a[10]; 
    char *x = a; 
    char *y = &a[0]; 
    

    xまたはyのどちらかは、あなたが探しているものであり、等価です。

  3. ヒント:cdeclについてご確認ください。

+1

@Carl私はあなたが項目2のアスタリスクをいくつか見逃してしまったと思う。 – sidyll

+0

うん、これは間違いない。ありがとう、@シジル!あなたが私が将来それをするのを見たら、あなた自身でそれらを編集するように自由に感じてください - そうするためにたくさんの担当者がいるようです。 –

+1

さて、私は大きな敬意を払っているユーザーから答えの完全性を崩したがっていませんでした。 – sidyll

3

あなたはextern char (*p)[];としてそれを宣言することができますが、それは不完全タイプです。これはもちろん、Cには一般的に完全な型の "配列"型がないためです。特定のサイズの配列だけが完全型です。

次の作品は:

extern char (*p)[]; 

char arr[20]; 

char (*p)[20] = &arr; // complete type now: p points to an array of 20 chars 
関連する問題