更新時(shí)間:2020-09-18 來(lái)源:黑馬程序員 瀏覽量:
內(nèi)存地址就是指針,是一個(gè)常量,通過(guò)指針可以訪問(wèn)內(nèi)存中存儲(chǔ)的數(shù)據(jù)。例如,定義一個(gè)int類(lèi)型的變量,示例代碼如下:
int a=10;
上述代碼定義了一個(gè)int類(lèi)型的變量a,存儲(chǔ)了整型的數(shù)據(jù)10,編譯器會(huì)根據(jù)定義變量的類(lèi)型為變量a分配4字節(jié)的連續(xù)內(nèi)存空間。假如這塊連續(xù)空間的首地址為0x0037FBCC,變量a占據(jù)0x0037FBCC~0x0037FBD0內(nèi)存區(qū)域共4個(gè)字節(jié)的空間,0x0037FBCC就是變量a的地址。變量a在內(nèi)存中的存儲(chǔ)如圖1所示。
在圖1中,變量a的地址為0x0037FBCC,0x0037FBCC就是指向變量a的指針,通過(guò)該指針可以訪問(wèn)變量a。
如果有一個(gè)變量專門(mén)用來(lái)存放地址(指針),這個(gè)變量就被稱為“指針變量”。指針和指針變量是兩個(gè)完全不同的概念,指針是一個(gè)地址,而指針變量是存放地址(指針)的變量。
在C語(yǔ)言程序中,定義指針變量的語(yǔ)法格式如下:
變量類(lèi)型 *變量名;
關(guān)于上述語(yǔ)法格式的介紹如下:
(1)變量類(lèi)型指的是指針指向的變量的數(shù)據(jù)類(lèi)型,即指針類(lèi)型在內(nèi)存中的尋址能力,如char類(lèi)型決定了指針指向1個(gè)字節(jié)地址空間,int類(lèi)型決定了指針變量指向4個(gè)字節(jié)地址空間。
(2)*表示了定義的變量是指針類(lèi)型。
(3)變量名是存儲(chǔ)內(nèi)存地址的名稱,即指針變量,其命名方式遵循標(biāo)識(shí)符命名規(guī)則。
下面的代碼定義了不同數(shù)據(jù)類(lèi)型的指針變量,具體如下:
char* i; int* t; double* c; long* a; long double* s; unsigned int* T;
上述代碼定義了各種類(lèi)型的指針變量,在實(shí)際開(kāi)發(fā)中,人們總會(huì)把指針變量簡(jiǎn)稱為指針,如指針變量i往往會(huì)簡(jiǎn)稱為指針i,但讀者要理解其中的含義。
若將編寫(xiě)程序比喻成購(gòu)買(mǎi)火車(chē)票,程序執(zhí)行就類(lèi)似于驗(yàn)票乘車(chē)去往目的地。如果把火車(chē)當(dāng)作計(jì)算機(jī)內(nèi)存,那么火車(chē)上有順序排列的座位號(hào)相當(dāng)于內(nèi)存中的地址編號(hào),座位上的乘客相當(dāng)于存儲(chǔ)在內(nèi)存中的數(shù)據(jù),通過(guò)座位號(hào)可以準(zhǔn)確找到乘客,類(lèi)似于使用地指針訪問(wèn)內(nèi)存中的數(shù)據(jù)。
如果把乘務(wù)員比作指針變量,乘務(wù)員通過(guò)查看座位號(hào)就能確認(rèn)乘客信息,這就好比通過(guò)內(nèi)存地址獲取內(nèi)存中的數(shù)據(jù)。
猜你喜歡:
C/C++知識(shí)點(diǎn):指針的三點(diǎn)精華
C/C++函數(shù)指針簡(jiǎn)單講解
C/C++培訓(xùn)課程
結(jié)構(gòu)體struct和聯(lián)合體union(聯(lián)合)有什么區(qū)別?
2020-06-15學(xué)Java能做游戲開(kāi)發(fā)嗎?我喜歡玩游戲,想找一份游戲開(kāi)發(fā)的工作?
2020-06-15C語(yǔ)言的指針學(xué)起來(lái)很難嗎?
2020-06-15如何做那種帶圖形窗口的程序需要學(xué)什么語(yǔ)言?
2020-06-15為什么學(xué)C++還要學(xué)習(xí)C語(yǔ)言?
2020-06-15游戲服務(wù)器都用什么語(yǔ)言開(kāi)發(fā)的?
2020-06-15