3.9.3 指針的賦值和使用
在得到一個(gè)指針變量之后,指針變量的值還是一個(gè)隨機(jī)值。這個(gè)值可能是內(nèi)存中無(wú)關(guān)緊要的數(shù)據(jù),也可能是重要的數(shù)據(jù)或者程序代碼,如果直接使用是很危險(xiǎn)的,所以在使用指針之前,必須對(duì)其進(jìn)行賦值,將其指向某個(gè)有意義的數(shù)據(jù)或代碼。對(duì)指針變量進(jìn)行賦值的語(yǔ)法格式如下:
指針變量 = 內(nèi)存地址;
可以看到,對(duì)指針變量的賦值,實(shí)際上就是將這個(gè)指針指向某一內(nèi)存地址,而這個(gè)內(nèi)存地址上存放的就是這個(gè)指針想要指向的數(shù)據(jù)。通常我們用一個(gè)變量來(lái)保存數(shù)據(jù),那么該如何方便地得到一個(gè)變量在內(nèi)存中的地址呢?反過(guò)來(lái),如果知道一個(gè)指針,又如何取出存放在其中的數(shù)據(jù)呢?為了解決這兩個(gè)問(wèn)題,C++提供了兩個(gè)與內(nèi)存地址相關(guān)的運(yùn)算符——“&”和“*”。
1. “&”運(yùn)算符
“&”稱(chēng)為取地址運(yùn)算符,如果把它放在一個(gè)變量的前面,則可以得到該變量在內(nèi)存中存放的地址。例如:
// 定義一個(gè)整型變量
int N = 703;
// 取得整型變量的地址并將其賦值給整型指針
int*pN = &N;
通過(guò)“&”運(yùn)算符可以取得N這個(gè)整型變量的內(nèi)存地址,然后將其賦值給指針pN,也就是將指針pN指向N這個(gè)整數(shù)數(shù)據(jù),如圖3-7所示。

圖3-7 指針和指針?biāo)赶虻臄?shù)據(jù)