1

違いはありますか

const char* name = "name";

const char *name = "name";

ありがとうございました。

4

4 に答える 4

8

番号。

しかし、

const char* name = "hello", something = "else";

これは機能しませんが、

const char *name = "hello", *something = "else";

したほうがいい

于 2013-02-26T19:50:35.953 に答える
3

いいえ、違いはなく、両方の宣言は同等です。

Cスタイルは、ポインタオブジェクトを次のように宣言する傾向があることに注意してください。

T *a;

C ++スタイルは、ポインタオブジェクトを次のように宣言する傾向があります。

T* a;
于 2013-02-26T19:50:00.400 に答える
2

どちらも次のように解析されますconst char (*name) = "name";-*は型指定子ではなく、宣言子にバインドされます。

CおよびC++での宣言は、オブジェクトではなく、式のタイプに基づいています。あるタイプへのポインターがあり、ポイントされてTいる値にアクセスしたい場合は、ポインターを尊重します。

x = *p;

のタイプは*pTであるため、ポインタの宣言は次のようになります。

T *p;

あなたの場合、文字列リテラルを開始する値をname指します。char文字値を取得したい場合は、次の'n'ように記述します。

const char start = *name; // assigns 'n' to start

したがって、式のタイプは *nameあるconst charため、通常は宣言を記述します

const char *name;

C宣言構文がどのように機能するかにより、*トークンの前後の空白は重要ではありません。あなたはそれを次のように書くことができます

const char *name;
const char* name;
const       char          *                            name;

または他の組み合わせ。私や他の多くの人は、宣言構文を正確に反映しているため、最初の形式を好みます。のタイプを強調しているため、構文の見方が少し誤解を招く可能性がありますが、2番目の形式を好む人もいますname

3番目のフォームが好きだと主張する人は誰でもトローリングかクレイジーです。

于 2013-02-26T22:33:13.023 に答える
0

それは主に好みの問題です。

個人的const char* nameには、型がポインタ(a)であることを明確にしたいので使用しますが、多くの人は、それがポインタ(型)であることを示すchar*ために使用する方が正しいと考えています。const char *name*namechar

于 2013-02-26T19:52:43.490 に答える