重複の可能性:
配列名は C のポインターですか?
そのため、通常はポインターを使用して配列を宣言します。
ただし、角括弧表記を使用して配列を宣言することもできます。
char a[] = "ok" ;
char b[] = "to" ;
char *pa = a ;
cout << "a " << sizeof( a ) << endl ; // 3
cout << "pa " << sizeof( pa ) << endl ; // 4
奇妙な点は、ポインターsizeof( a )
のサイズではなく、配列の実際のサイズ (バイト単位) になることです。
ポインタはどこにあるのでしょうか?(sizeof(char)*numElements)
角括弧で宣言された配列は、実際にはバイトを含む一種のデータ構造ですか?
また、a を b に再割り当てすることはできません。
a = b ; // ILLEGAL.
何故ですか?aは配列であり、配列へのポインターではないようです( 「左オペランドは左辺値でなければなりません」は上記のエラーですa = b
)。そうですか?