一.指針
int? *Ptr;? ? ? //聲明一個(gè)整型指針變量
int? y=7 ;? ? ? //聲明一個(gè)整型變量并賦值為7
Ptr = &y ;? ? //&是取地址符號(hào)爆哑,&y就是得到y(tǒng)的地址液茎,然后將y的地址存儲(chǔ)到Ptr的內(nèi)存空間(將y的地址賦值給Ptr)
&取地址符號(hào)野宜,? *引用指針指向的值
示例
地址????? ? ?35? ? ?? ? 36
變量? ? ? ? Ptr? ? ? ? ? y
值????????? ? 36????????? ?7
這里采用簡(jiǎn)化的說法(計(jì)算機(jī)中內(nèi)存地址一般是以16位16進(jìn)制數(shù)表示,例如0x7ffc111e6da0)妻顶。
此時(shí)酸员,運(yùn)行在內(nèi)存中的變量由三部分組成,一是地址讳嘱,二是變量名幔嗦,三是變量值(可能為空)。
(1) int? *Ptr; 語(yǔ)句聲明了一個(gè)指針沥潭,假設(shè)系統(tǒng)將這個(gè)變量名Ptr存儲(chǔ)在35號(hào)地址單元邀泉,這時(shí)候它還沒有值,我們表示成這樣叛氨。
變量? ? ? ? Ptr? ? ? ? ??
地址????? ? ?35? ? ? ??
值? ? ? ? ? ??
(2)int? y = 7; 這里定義一個(gè)值為7的整型變量y呼渣,假設(shè)系統(tǒng)將這個(gè)變量名y和變量值存儲(chǔ)在35號(hào)地址單元旁邊的36號(hào)地址單元,示例如下
地址????? ? ?35? ? ?? ? 36
變量? ? ? ? Ptr? ? ? ? ? y
值? ? ? ? ? ? ? ? ? ? ? ? ? 7
(3)Ptr = &y; 這個(gè)語(yǔ)句用&y得到y(tǒng)的存儲(chǔ)地址也就是36,然后將36賦值給Ptr寞埠,也就是存儲(chǔ)到35號(hào)地址存放變量值的空間
地址????? ? ?35? ? ?? ? 36
變量? ? ? ? Ptr? ? ? ? ? y
值????????? ? 36????????? ?7
(4)*Ptr為獲得Ptr中存儲(chǔ)的地址所指向的值,也就是36號(hào)地址存放的值
?????? *Ptr -->? 36? -->? 7? ? ? ? ??即 *Ptr = 7;? ? ? ? ? ? //Ptr存放的是地址36,地址36存放的值是7, *符號(hào)在這里獲得36存儲(chǔ)的值
cout << *Ptr ;? 輸出為7
cout << Ptr ;? ?輸出為36? ? ? ? ? ? ? ? ? ? //實(shí)際上的地址是類似與這樣的 0x7ffeb92a2be4
cout << &Ptr ;? 輸出為它的地址35? ? //同上焊夸,它也是16位16進(jìn)制
cout << &y ;? ?輸出y的地址36? ? ? ? ? ?//同上
二.結(jié)構(gòu)與鏈表實(shí)現(xiàn)