2016-08-01 1 views
-6

私はちょうどポインタについての基本的なアイデアを持っています。 int *v;int **v;の違いは何ですか?int* v;int *v;の間に違いがありますか教えてください。変数に対して1つの排他演算子と2つの逆参照演算子を使用する違いは何ですか?

+4

初心者のCチュートリアルを読んでください。あなたの質問の内容は、 "私はちょうどポインタに関する基本的な考え方を持っている"という声明に賛成です。 –

+2

'int * a'と' int * a'と 'int * a'には違いはありません。次に、ポインタを逆参照すると、別のポインタで終わることがあります。ポインタは、そのポインタが指す値を取得するために逆参照する必要があります。このプロセスは何度も何度も繰り返され、悪夢のようなものになります。「***** a;」や「********* b」。 – ForceBru

+0

[What is sense-char \ * stringまたはchar \ * string?](http://stackoverflow.com/questions/558474/what-makes-more-sense-char-string-or-char-)の可能な複製は、文字列) – DevNull

答えて

12

変数宣言内の*は、変数が宣言された後で*と同じことを意味しません。宣言では、*は、宣言されている変数が、宣言している型の値へのポインタであることを示しています。

int **v; 

int値へのポインタへのポインタの宣言であるあなたの例では、

int *v; 

は、int値へのポインタの宣言です。

しかし、後に宣言した後、あなたのコードでは、あなたがして、ポインタが指すメモリ位置に格納された値をそのポインタを参照解除に

*v 

を呼び出して、得ることができます。

int* vint *vの間に違いはありませんが、同じ行に複数の変数を宣言する場合は、int *vを使用する方がはっきりしています。

int *v, u 

あなたの意図について、もう少し明確にされて終わるの書き込み中uが、ちょうどその宣言から不明瞭かもしれint、あるとき

int* v, u 

vintへのポインタが(作りですvintポインタuはちょうどint)。

関連する問題