C のポインターと配列の概念を理解しています。私の問題はそれらの構文です。これは何ですか:
char* var;
char var*;
あなたの前提は間違っています。1つ目はポインタ型で、2つ目は...何もありません。有効なC ++ではありません(その点ではCでもありません)。静的配列は次のようになります。
char var[15];
一方、動的配列は通常vectorで行われます。
配列とポインターの混同は、C プログラミング言語の遺産であり、とは同じことを意味するため、 が配列ではなくポインターの場合でも使用*(a+n)
できます。ただし、これは C++ ではあまり慣用的ではありません。a[n]
a[n]
a
char* var;
var
「へのポインタ」であることを宣言しますchar
。char var*;
は有効な宣言ではありません。
配列は次のように宣言されますchar var[10];
。
これはポインタです:
char* var;
これは構文的に正しくなく、コンパイルできません:
char var*;
C++ の配列とポインターは同じものではありませんが、構文上は同じように見える場合があります。次のように C++ で配列を宣言できます。
char ary[] = {'a','b','c'};
...そしてこれは有効です-3つの要素で作成された配列があります。
ポインタを取る関数を作成することもできます:
void foo(char* bar)
{
// ...
}
...そしてそれを渡しますary
:
foo(ary);
...そして、コンパイルして正常に実行されます。これにより、ポインターと配列が同じものであると信じるようになる可能性があります。しかし、そうではありません。 bar
上記の は配列でfoo
はありません。配列の最初の要素を指すポインターです。