0

C のポインターと配列の概念を理解しています。私の問題はそれらの構文です。これは何ですか:

char* var;
char var*;
4

3 に答える 3

16

あなたの前提は間違っています。1つ目はポインタ型で、2つ目は...何もありません。有効なC ++ではありません(その点ではCでもありません)。静的配列は次のようになります。

char var[15];

一方、動的配列は通常vectorで行われます。

配列とポインターの混同は、C プログラミング言語の遺産であり、とは同じことを意味するため、 が配列ではなくポインターの場合でも使用*(a+n)できます。ただし、これは C++ ではあまり慣用的ではありません。a[n]a[n]a

于 2012-05-04T20:36:47.817 に答える
7

char* var;var「へのポインタ」であることを宣言しますcharchar var*;は有効な宣言ではありません。

配列は次のように宣言されますchar var[10];

于 2012-05-04T20:37:18.067 に答える
3

これはポインタです:

char* var;

これは構文的に正しくなく、コンパイルできません:

char var*;

C++ の配列とポインターは同じものではありませんが、構文上は同じように見える場合があります。次のように C++ で配列を宣言できます。

char ary[] = {'a','b','c'};

...そしてこれは有効です-3つの要素で作成された配列があります。

ポインタを取る関数を作成することもできます:

void foo(char* bar)
{
// ...
}

...そしてそれを渡しますary:

foo(ary);

...そして、コンパイルして正常に実行されます。これにより、ポインターと配列が同じものであると信じるようになる可能性があります。しかし、そうではありません。 bar上記の は配列でfooはありません。配列の最初の要素を指すポインターです。

于 2012-05-04T20:42:15.690 に答える