-1

重複の可能性:
C - ポインターの初期化、アスタリスク位置

これらの宣言の違いは何ですか:

char* str; 

char *str; 

違いはありますか?

もう一つの例:

   char* str; 
   struct StrStackLink *next; 

両方ともstrポインタnextですか、それとも星の配置に何か意味がありますか?

4

7 に答える 7

3

違いはありません - どちらも char へのポインタを宣言します。ただし、同じ行で複数の変数を宣言すると違いがあります

char* str1, str2;

str1ポインターでありstr2、char であると宣言しますが、

char *str1, *str2;

2 つの char ポインタを宣言します

于 2012-12-20T09:08:25.070 に答える
2

作成した char ポインター宣言はすべて同等です。星の配置は何かを変えます。

紛らわしい場合は、次の宣言です。

char* a, b;

ここでは、 a へのポインターchar、および b、aを宣言しますchar。したがって、わかりやすくするために、星を変数名で折りたたむことをお勧めします。

char *a, b;
于 2012-12-20T09:08:18.010 に答える
1

いいえ、まったく違いはありません。個人的な好みの問題です。

于 2012-12-20T09:07:00.517 に答える
1

両者に違いはありません。

于 2012-12-20T09:07:22.233 に答える
1

いいえ、違いはありませんが、それがポインターchar *strであることを知っているので、記法の方が優れています。str

たとえば、宣言は、それがポインターであるchar *str1,str2ことを意味しますが、char です。宣言は同じことを意味しますが、混乱します。str1str2char* str1,str2

于 2012-12-20T09:08:28.947 に答える
0

全く違いはありません

両方ともchar *str同じchar* strです

char * str;も同じです。

スペースはこれに影響を与えず、*常に識別子名と一緒に使用されます。

はい、2番目の質問は両方ともnextポインタstrです。

以下の場合、

char *str,s;ここにstrあるのはただです。両方をポインタとして各識別子の前に置きたい場合。pointerschar*

または、typedef同じタイプのポインターが複数必要な場合に、この場合に考慮すべき使用法を次に示します。

typedef char* pchar;

pchar str, s; // both str and s are pointers
于 2012-12-20T09:10:42.563 に答える
0

違いはありません。

そのように考えさせられる証拠はありますか?

次のように宣言することもできます。

char * p;
于 2012-12-20T09:08:19.023 に答える