【C語言】指針學(xué)習(xí)總結(jié)-創(chuàng)新互聯(lián)

1.變量

?我們平時使用的計算機,有一個CPU,有一個內(nèi)存,CPU僅包含運算邏輯,所有的指令和數(shù)據(jù)都在內(nèi)存中,內(nèi)存僅供存儲。

我們擁有十多年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站制作、微信開發(fā)、成都微信小程序、手機網(wǎng)站開發(fā)、HTML5、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。

?CPU沒有能力直接操作內(nèi)存里的值,需要從一個特定地址取出數(shù)據(jù),對數(shù)據(jù)進行加工運算,再加工后的數(shù)據(jù)存入另一個特定地址。

內(nèi)存是一個存放數(shù)據(jù)的空間,內(nèi)存是按一個字節(jié)接著一 個字節(jié)的次序進行編號,每個字節(jié)都有個編號,我們稱編號為內(nèi)存地址。

? 當(dāng)我們聲明一個變量 int i = 1; 時,其實是在內(nèi)存中申請了一個名為i的整型變量寬度的空間,這個空間的編號就是它的地址,空間里的數(shù)據(jù)為整數(shù)1,使用變量就是使用里面的數(shù)據(jù)。

? 用表達(dá)式&i表示是取 i 變量所在的地址編號(如:0xff),&為取地址符,即返回 i 變量的地址。

2.指針

? 1.聲明一個指向整型變量i的指針的語句: int *p;p = &i;? ?p?是一個指針,也是一個變量(指針變量),只不過指針里存儲的數(shù)據(jù)是一個地址(指針是一個存儲其指向的變量的地址的變量)。

可以這樣理解:指針變量p的類型為int *,p指向的變量i數(shù)據(jù)類型為int,*p類型為int,使用*p就是使用變量i,*為取值符。CPU通過操作地址來操作內(nèi)存空間里的數(shù)據(jù),我們通過指針變量(即地址)來操作內(nèi)存空間里的變量(即數(shù)據(jù))。

指針本?也是?個變量,所以指針也是有??的地址,但是這個變量有點特殊,存放的是另?個變量的地址。

指針2個層次:

指針?先是?個變量,他就擁有變量的所有屬性:值和類型。它的類型是指針,值就是另?個變量的地址。指針變量也需要內(nèi)存空間,存放其他變量的地址

指針變量存儲哪個變量的地址,就表示指向?qū)?yīng)的變量的空間

2.指針的運算,對指針變量(指針變量存儲的數(shù)據(jù)(數(shù)據(jù)是地址))進?運算

p表?指針變量

+(加法): p?+ n:

指針p向地址增?的?向移動n個數(shù)據(jù)(指針指向的數(shù)據(jù)類型)大小的地址 如: int * p?= 0x10; p?+ 5 == 0x10 + sizoef(int)*5 = 0x10 + 0x14 == 0x24

-(減法): p?- n:

指針p向地址減小方向移動n個數(shù)據(jù)大小的地址 如: double * p?= 0x30; p?- 3 = 0x30 - 3*sizeof(double) = 0x30 - 0x18 = 0x18

特殊: p1 - p2:

指針減指針,指兩個地址間間隔多少個數(shù)據(jù) 如: double * p1 = 0x10, *p2 = 0x20; p2 - p1 = (0x20 - 0x10)/sizeof(double) = 0x10 / 8 = 2

*(乘法): p?* n---錯誤

/(除法): p?/ n---錯誤

++:

p++:?先使?指針變量p,然后 p?= p?+ 1,向地址增大方向移動?個數(shù)據(jù)類型大小,地址存儲到p中 ????????

++px:先 px = px+1,向地址增??向移動?個數(shù)據(jù)類型??地址存儲到px 中,然后再使?px指針

3.指針與數(shù)組

數(shù)組:在內(nèi)存中,數(shù)組的數(shù)據(jù)元素是?段連續(xù)的空間,在這段空間中每 個元素占?對應(yīng)的大小,元素與元素之間相連

訪問數(shù)組,就可以使?指針。

a[0]和a[1]數(shù)據(jù)地址是連續(xù)的(在存儲是時挨在?起的),相隔就是?個數(shù)據(jù)大?。╝[0])。

指針p = &a[0]? ? ? ? 指針訪問:*p, *(p+1)

由于數(shù)組的數(shù)據(jù)元素是連續(xù)的,元素地址是相鄰的,只要有?個指針存儲了數(shù)組元素的地址,就可以指針運算(+、-)可以得到數(shù)組其他元素的地址

如: p = &a[0]? ? p+1 == &a[1]? ? ?p+3 == &a[3]

只要知道數(shù)組的第?個元素的地址,就可以通過地址(指針)遍歷整個數(shù)組

數(shù)組第?個元素地址------數(shù)組首地址(數(shù)組起始地址)

對于數(shù)組而言:數(shù)組名就是數(shù)組的首地址---第?個元素地址

int a[5];

數(shù)組名+ n (a + n):移動n個數(shù)組元素大小的地址

*(地址):取出地址中的數(shù)據(jù)(取出數(shù)組元素)

數(shù)組首地址?+ n(&a[0] + n):可以偏移搭到數(shù)組的每個元素的地址

*(數(shù)組名 + n) :訪問到數(shù)組每個元素 === 數(shù)組名[n] 如: *(a+2) == a[2]

指針變量存儲地址,可以存儲數(shù)組首地址 int * p = a; //&a[0] p+n == a+n

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:【C語言】指針學(xué)習(xí)總結(jié)-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article34/gdsse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、企業(yè)建站企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司