タグ

2014年12月10日のブックマーク (1件)

  • C FAQ 1

    6.1: あるソースファイルでchar a[6]と定義して、別のファイルでextern char *aと宣言した、なぜこれはうまくいかないのか。 A: extern char *aという宣言が、実際の定義とい違うからである。 「タイプTへのポインター」は「タイプTの配列」とは異なる。extern char a[]を使え。 References: ANSI Sec. 3.5.4.2; ISO Sec. 6.5.4.2; CT&P Sec. 3.3 pp. 33-4, Sec. 4.5 pp. 64-5. 6.2: でもchar a[]はchar *aと同じと聞いたことがあるが。 A: 全然別のものである(君が聞いた話というのは、関数の仮引数の話だ。 質問2.4参照)。配列はポインターと違う。配列の宣言「char a[6]」 は6文字分の領域を確保して、それを「a」という名前で識別すること

    wasabiz
    wasabiz 2014/12/10
    “どちらかがポインターを表す式で、残りが整数である限り、どん なaとeをもってきても、a[e]は*((a)+(e))と同じものであるという定 義である。”