質問: "BBB"; ``` 上のように宣言しても ``` for( int i=0; a[i]; i++ ){ cout << a[i]; } for( int i=0; b[i]; i++ ){ cout << b[i]; } ``` 上のように同じように利用しているので違いがわからないのですが、`a`と`b`には違いがありますか
回答: 他の回答で説明は十分だと思われますが、混乱してしまう原因の一つに関数の引数の場合があります。これだけはポインタで書こうが配列で書こうがどちらもポインタの型として認識されます。ただし配列の方は明示的に要素数を指定することも可能です。 ``` void foo(int *a) ``` と ``` void foo(int a[]) ``` はどちらも同じ意味です。 さらに補足というか蛇足ですが、これが二次元以上の配列を関数に渡すときは少し事情が違ってきます。 詳しくは次のリンクを参考にしてください。 あと、関数とは別の話で、ローカル変数として配列で宣言時に文字列を代入できるのに、一旦何も代入せずに配列で宣言した場合はstrcpy()などを使わないと配列に入れられない等も、最初は理解に苦しむポイントです。一方ポインタの場合は宣言時以降も文字列をそのまま代入することが可能です。