2013年5月9日 星期四
(C++) 淺談指標
C語言用 " * " 來宣告一個指標型態的變數,例如,想要宣告一個指向int的指標可以這樣做 : int* intPtr; intPtr是用來指向一個int變數的指標,intPtr儲存的是int變數的位址,而這個位址所對應到的地址所存的變數值,可以用*intPtr來表示。 例子:
#include < iostream >
void main( )
{
int var = 10;
int* intPtr = &var ;
std::cout << "變數var的位址:" << intPtr << std::endl;
std::cout << "指標intPtr所指向的變數的值:" << *intPtr << std::endl;
}
剛開始我們會被指標搞得頭暈腦脹,主要是因為指標在宣告時期和使用時期非常類似,但又不完全相同,在宣告時期,筆者習慣寫成(注意星號的位置)
int* intPtr;
而不是
int *intPtr;
宣告成int* intPtr; 筆者認為更貼近於指標所隱含的意思 -> intPtr是一種指向int型態變數的指標。
既然intPtr是一種指標,不同於一般的變數如 int intVal; 其中intVal是一個型態為int的變數,變數所存的內容是變數值,而指標所存的值則是"位址",例如:
intPtr = &intVal;
則intPtr這個指標所存的值是intVal變數的地址,有了地址,要如何找到intVal所存的變數呢?答案就是要靠 " * "來取值,也就是 *intPtr。
簡單來說,除了宣告時期,當你在程式內容中看到沒跟" * "搭配出現的指標變數,他是想表達"位址",而與" * "搭配一起出現的指標變數,他想表達的是他所存的地址所指向的變數值(可能是另一指標所存的地址,這就是雙重指標的意義)。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言