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」という名前で識別すること