免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
搞清楚C++指針(值為內(nèi)存地址的特殊變量)

內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址” 。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元。

按變量地址存取變量值的方式稱為“直接訪問(wèn)”方式。

另一種存取變量值的方式稱為“間接訪問(wèn)”的方式。即,將變量A的地址存放在另一個(gè)變量B(指針)中。然后通過(guò)A這個(gè)指針變量去訪問(wèn)B;


指針的設(shè)計(jì)有什么用途呢?

  • 可以增加變量訪問(wèn)的途徑,使變量不僅可以通過(guò)變量名直接訪問(wèn),也可以通過(guò)指針間接訪問(wèn)。

  • 指針可以使程序的不同部分共享數(shù)據(jù)。

  • 可以通過(guò)指針在程序執(zhí)行過(guò)程中動(dòng)態(tài)申請(qǐng)空間。

程序運(yùn)行時(shí)每個(gè)變量都會(huì)有一塊內(nèi)存空間,變量的值就是存入在這塊空間中。程序可以通過(guò)變量名訪問(wèn)這塊空間中的數(shù)據(jù)。這種訪問(wèn)方式稱為直接訪問(wèn)。

內(nèi)存中的每字節(jié)都有一個(gè)編號(hào),每個(gè)變量對(duì)應(yīng)的內(nèi)存的起始編號(hào)稱為這個(gè)變量的地址。程序運(yùn)行時(shí),計(jì)算機(jī)記錄了每個(gè)變量和它地址的對(duì)應(yīng)關(guān)系。當(dāng)程序訪問(wèn)某個(gè)變量時(shí),計(jì)算機(jī)通過(guò)這個(gè)對(duì)應(yīng)關(guān)系找到變量的地址,訪問(wèn)該地址中的數(shù)據(jù)。

直接訪問(wèn)就如你知道A朋友(變量)家在哪里(地址),你想去他家玩,就可以直接到那個(gè)地方去。如果我不知道A朋友家信哪里,但另外有個(gè)B朋友知道,你可以從B朋友處得到A朋友家的地址,再按地址去A朋友家。這種方式稱為間接訪問(wèn)。在C++中,B朋友被稱為指針變量,并稱為B指針指向A變量;

定義一個(gè)指針變量要說(shuō)明三個(gè)問(wèn)題:

  • 該變量的名字是什么?

  • 該變量中存儲(chǔ)的是一個(gè)地址(即是一個(gè)指針);

  • 該地址中存儲(chǔ)的是什么類型的數(shù)據(jù);

指針是內(nèi)存的快捷方式。

指針是內(nèi)存地址,使用指針訪問(wèn)變量,就是直接對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作,合理地使用指針,可以提高程序運(yùn)行的速度,增強(qiáng)操作的靈活性。

訪問(wèn)內(nèi)存中的數(shù)據(jù)有兩種方式,直接訪問(wèn)和間接訪問(wèn)。直接訪問(wèn)就是通過(guò)變量來(lái)實(shí)現(xiàn),因?yàn)樽兞渴莾?nèi)存中某一塊存儲(chǔ)區(qū)域的名稱;間接訪問(wèn)就是通過(guò)指針來(lái)實(shí)現(xiàn)。指針并不是用來(lái)存儲(chǔ)數(shù)據(jù)的,而是用來(lái)存儲(chǔ)數(shù)據(jù)在內(nèi)存中的地址,我們可以通過(guò)訪問(wèn)指針達(dá)到訪問(wèn)內(nèi)在中數(shù)據(jù)的目的。

指針的聲明

指針類型* 名稱,如:

int* ptr; //指針的類型是int*;

通過(guò)指針來(lái)訪問(wèn)指針?biāo)赶虻膬?nèi)存區(qū)時(shí),指針?biāo)赶虻念愋蜎Q定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)作什么來(lái)看。

指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚€(gè)概念。

指針的值是指針本身存儲(chǔ)的數(shù)值,這個(gè)值將被編譯器當(dāng)作一個(gè)地址,而不是一個(gè)一般的數(shù)值。在32位程序里,所有類型的值都是一個(gè)32位整數(shù),因?yàn)?2位程序里內(nèi)存地址全都是32位的。

當(dāng)我們說(shuō)一個(gè)指針的值是xx時(shí),就相當(dāng)于說(shuō)該指針指向了以xx為首地址的一片內(nèi)存區(qū)域;我們說(shuō)一個(gè)地址指向了某塊內(nèi)存區(qū)域,就相當(dāng)于說(shuō)該指針的值是這塊內(nèi)在區(qū)域的首地址。

根據(jù)數(shù)組占據(jù)內(nèi)存中連續(xù)的存儲(chǔ)區(qū)域這樣一個(gè)性質(zhì),使用指針將使我們操作數(shù)組元素的手段更加豐富。

C語(yǔ)言中許多字符串的操作都是由指向字符數(shù)組的指針及指針的運(yùn)算來(lái)實(shí)現(xiàn)。對(duì)字符串來(lái)說(shuō)一般都是嚴(yán)格順序存取,使用指針可以打破這種存取方式,使字符串的處理更加靈活;

指針是一個(gè)其數(shù)值為地址的變量。

nurse = 22;

ptr = &nurse;

val = *ptr

以上三行等價(jià)于:

val = 22;

有關(guān)指針的數(shù)據(jù)類型
定義含義
int i;定義整型變量i
int *p;p為指向整型數(shù)據(jù)的指針變量
int a[n];定義整型數(shù)組a,它有n個(gè)元素
int *p[n];定義指針數(shù)組p,它由n個(gè)指向整型數(shù)據(jù)的指針元素組成
int (*p)[n];p為指向含n個(gè)元素的一維數(shù)組的指針變量
int f();f為帶回整型函數(shù)值的函數(shù)
int *p();p為帶回一個(gè)指針的函數(shù),該指針指向整型數(shù)據(jù)
int (*p)();p為指向函數(shù)的指針,該函數(shù)返回一個(gè)整型值
int **p;p是一個(gè)指針變量,它指向一個(gè)指向整型數(shù)據(jù)的指針變量

指針=基本數(shù)據(jù)類型+存儲(chǔ)地址

指針是指存儲(chǔ)XX數(shù)據(jù)類型的地址,也就是訪問(wèn)到一個(gè)地址后,需要截取多長(zhǎng)的數(shù)據(jù)呢?由類型定義,即可知長(zhǎng)度;

用指針變量可以指向一個(gè)函數(shù)。

函數(shù)在編譯時(shí)被分配給一個(gè)入口地址。這個(gè)函數(shù)的入口地址就稱為函數(shù)的指針。

函數(shù)指針變量常用的用途之一是把指針作為參數(shù)傳遞到其他函數(shù)。指向函數(shù)的指針也可以作為參數(shù),以實(shí)現(xiàn)函數(shù)地址的傳遞,這樣就能夠在被調(diào)用的函數(shù)中使用實(shí)參函數(shù)。

一個(gè)數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說(shuō),指針數(shù)組中的每一個(gè)元素都相當(dāng)于一個(gè)指針變量。

指針類型數(shù)據(jù),能用來(lái)實(shí)現(xiàn)各種復(fù)雜結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算;

指針變量賦值

將一個(gè)變量地址賦給一個(gè)指針變量。如:

p=&a; (將變量a的地址賦給p)

p=array; (將數(shù)組array首元素地址賦給p)

p=&array[i];(將數(shù)組array第i個(gè)元素的地址賦給p)

p=max;(max為已定義的函數(shù),將max的入口地址賦給p)

p1=p2;(p1和p2都是指針變量,將p2的值賦給p1)

指針就是指向變量和對(duì)象的地址。如果對(duì)象的數(shù)據(jù)量過(guò)大,只需用指針來(lái)作形差,然后傳遞一個(gè)地址即可,從而大大提高了效率。

星號(hào)操作

變量賦值可以修改內(nèi)存,在引入了指針之后,可以使用另外一種辦法來(lái)修改內(nèi)存值:星號(hào)操作??梢允褂眯翘?hào)操作符*作用于指針變量上,來(lái)直接讀取內(nèi)存的值,如:

int a = 0 ;

int* p = &a; //p指向a;

*p = 0xa0a0a0a0; //寫操作:修改p指向的內(nèi)存的值;

int b = *p //讀操作,讀取p指向的內(nèi)存的值;

星號(hào)操作是一種按地址訪問(wèn)的技術(shù),只要知道了這塊內(nèi)存的地址,就可以直接修改這塊內(nèi)存的值。

內(nèi)存操作分為兩類:讀操作,寫操作,當(dāng)*p作為左值出現(xiàn)被賦值時(shí),就是寫操作,*p作為右值時(shí),就是讀操作。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C++指針
QQ瀏覽器
C語(yǔ)言關(guān)于指針的總結(jié)
C語(yǔ)言指針總結(jié)
一道試題引發(fā)的血案
核心語(yǔ)法進(jìn)階:3、指針就是一個(gè)門牌號(hào)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服