重複の可能性:
C - ポインターの初期化、アスタリスク位置
これらの宣言の違いは何ですか:
char* str;
と
char *str;
違いはありますか?
もう一つの例:
char* str;
struct StrStackLink *next;
両方ともstr
ポインタnext
ですか、それとも星の配置に何か意味がありますか?
重複の可能性:
C - ポインターの初期化、アスタリスク位置
これらの宣言の違いは何ですか:
char* str;
と
char *str;
違いはありますか?
もう一つの例:
char* str;
struct StrStackLink *next;
両方ともstr
ポインタnext
ですか、それとも星の配置に何か意味がありますか?
違いはありません - どちらも char へのポインタを宣言します。ただし、同じ行で複数の変数を宣言すると違いがあります
char* str1, str2;
str1
ポインターでありstr2
、char であると宣言しますが、
char *str1, *str2;
2 つの char ポインタを宣言します
作成した char ポインター宣言はすべて同等です。星の配置は何かを変えます。
紛らわしい場合は、次の宣言です。
char* a, b;
ここでは、 a へのポインターchar
、および b、aを宣言しますchar
。したがって、わかりやすくするために、星を変数名で折りたたむことをお勧めします。
char *a, b;
いいえ、まったく違いはありません。個人的な好みの問題です。
両者に違いはありません。
いいえ、違いはありませんが、それがポインターchar *str
であることを知っているので、記法の方が優れています。str
たとえば、宣言は、それがポインターであるchar *str1,str2
ことを意味しますが、char です。宣言は同じことを意味しますが、混乱します。str1
str2
char* str1,str2
全く違いはありません
両方ともchar *str
同じchar* str
です
char * str;
も同じです。
スペースはこれに影響を与えず、*
常に識別子名と一緒に使用されます。
はい、2番目の質問は両方ともnext
ポインタstr
です。
以下の場合、
char *str,s;
ここにstr
あるのはただです。両方をポインタとして各識別子の前に置きたい場合。pointer
s
char
*
または、typedef
同じタイプのポインターが複数必要な場合に、この場合に考慮すべき使用法を次に示します。
typedef char* pchar;
pchar str, s; // both str and s are pointers
違いはありません。
そのように考えさせられる証拠はありますか?
次のように宣言することもできます。
char * p;