違いはありますか
const char* name = "name";
と
const char *name = "name";
ありがとうございました。
番号。
しかし、
const char* name = "hello", something = "else";
これは機能しませんが、
const char *name = "hello", *something = "else";
したほうがいい
いいえ、違いはなく、両方の宣言は同等です。
Cスタイルは、ポインタオブジェクトを次のように宣言する傾向があることに注意してください。
T *a;
C ++スタイルは、ポインタオブジェクトを次のように宣言する傾向があります。
T* a;
どちらも次のように解析されますconst char (*name) = "name";
-*
は型指定子ではなく、宣言子にバインドされます。
CおよびC++での宣言は、オブジェクトではなく、式のタイプに基づいています。あるタイプへのポインターがあり、ポイントされてT
いる値にアクセスしたい場合は、ポインターを尊重します。
x = *p;
式 のタイプは*p
、T
であるため、ポインタの宣言は次のようになります。
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番目のフォームが好きだと主張する人は誰でもトローリングかクレイジーです。
それは主に好みの問題です。
個人的const char* name
には、型がポインタ(a)であることを明確にしたいので使用しますが、多くの人は、それがポインタ(型)であることを示すchar*
ために使用する方が正しいと考えています。const char *name
*name
char