3

正しいポインター構文を理解するのに苦労しています。さまざまなソースが異なる方法で行っているようです。

正しいのはどれか。

int* p = NULL;
int * p = NULL;
int *p = NULL;

そしてこれら?

*p = &x;
* p  = &x;

初心者の質問で申し訳ありませんが、明確な答えが見つからないようです。

*データ型の直後、変数名の直前、またはその間にありますか?

4

3 に答える 3

2

すべて有効で、同じ意味を持っているため、個人の選択の問題です。

注意すべき1つのことはこれです: -

int* i,j;

見た目にも関わらず、これはiint へのポインターとして宣言されています j、単なる int です。詳細については、こちらの質問を参照してください。本当にこれが必要な場合は、..

int *i;  
int j;   

または、それらを 1 行にまとめたい場合

int j, *i;
于 2012-07-13T09:12:03.960 に答える
0

それらはすべて正しいです。演算子の間、名前と演算子の間などの空白は関係ありません。

最も読みやすい方法で行ってください。

于 2012-07-13T08:54:46.277 に答える
0

これは、すべてが有効であるため、どちらが「正しい」かという文法の問題です。

宣言/コードが何を記述しているかを考え、それに応じてそれらを結合します。

例えば

「p という名前のint ポインターが必要です」は、次のことを意味します。int* p

「xのアドレスを含めたい」は、次のcontents pointed to by pことを意味します。*p = &x

新しい商用開発サイトへの移行を容易にするために、他の人が読みやすい、または一般的に使用されている標準を選択する必要があります。それらはすべて、同様のコーディング標準を持っています。

于 2012-07-13T08:02:41.307 に答える