2016-08-01 43 views
-6

我只是有一個關於指針的基本概念。 int *v;int **v;之間的區別是什麼和int* v;int *v;之間有什麼區別請讓我知道。對變量使用單一的參照運算符和雙重引用運算符有什麼區別?

+4

你應該真的閱讀一個介紹性的C教程。你的問題的內容掩蓋了「我對指針有一個基本概念」的說法。 –

+2

「int * a」,「int * a」和「int * a」沒有區別。然後,在取消引用指針時,最終可能會得到另一個指針,爲了獲取它指向的值(如果有),需要取消引用。這個過程可能會一再重複,導致一些惡夢如'***** a;'或'********* b'。 – ForceBru

+0

可能的重複[什麼更有意義 - 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 

v是一個指向intu只是一個int,這可能是不清楚從申報,一邊寫

int *v, u 

最終成爲你的意圖稍微清晰(使vint指針和u只是int)。

相關問題