32

重複の可能性:
C /C++でポインター変数を宣言する正しい方法

しばらくの間、次のことが私を悩ませてきました。ポインタ表記のどこに星を入れるべきですか。

int *var; // 1

int* var; // 2

明らかに同じことをし、両方の表記法は正しいですが、私が見ているほとんどの文献とコードは1番目の表記法を使用していることがわかります。

タイプと変数のトークンを混在させるのではなく、タイプと変数名を空白で区切って2番目の表記を使用する方が「正しい」のではないでしょうか。

4

3 に答える 3

27

いいえ、ありません。<g>

しかし、考慮してください:

int* var1, var2;

ここで、の配置*は誤解を招く可能性があります。これは、に適用され、に適用されないためです。var2intint*

于 2012-12-15T17:00:57.577 に答える
17

Linuxカーネルのコーディングスタイルの規則は次のとおりです。

int *ptr1 , *ptr2;

ですから、それをあなたの慣習として採用すべきだと思います。

ポインタデータまたはポインタ型を返す関数を宣言する場合、の推奨される使用法は*、データ名または関数名に隣接しており、型名に隣接していません。例:

char *linux_banner;
unsigned long long memparse(char *ptr, char **retptr);
char *match_strdup(substring_t *s);
于 2012-12-15T17:03:45.477 に答える
10

この表記の理由の一部は、変数の使用法と宣言が似ているためだと思います。

int *var;
int x;
x = *var;

varまた、間接参照によってintが得られると言うこともできます。

于 2012-12-15T17:01:49.550 に答える