最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:C語(yǔ)言中數(shù)組與指針的異同,兩大核心知識(shí)點(diǎn)分析

2020-08-08 21:38 作者:C語(yǔ)言編程__Plus  | 我要投稿

C語(yǔ)言的數(shù)組和指針一直是兩個(gè)容易混淆的東西,當(dāng)初在學(xué)習(xí)的時(shí)候,也許為了通過(guò)考試會(huì)對(duì)指針和數(shù)組的一些考點(diǎn)進(jìn)行突擊,但是很多極其細(xì)節(jié)的東西也許并不是那么清楚。本篇側(cè)重點(diǎn)在于分析數(shù)組與指針的關(guān)系,什么時(shí)候數(shù)組可以等同于指針,什么時(shí)候二者不同。

數(shù)組的訪問(wèn)

首先通過(guò)一張圖來(lái)描述一下數(shù)組的訪問(wèn)過(guò)程,下圖的字符數(shù)組,訪問(wèn)下標(biāo)為9的的元素


需要注意的是如果其他類型的變量,那么偏移量的計(jì)算應(yīng)該是 i*單變量字節(jié)數(shù),比如char是一個(gè)字節(jié),int是4字節(jié),那么int類型數(shù)組計(jì)算地址是,應(yīng)該是加上偏移量 i*4

指針的訪問(wèn)

下面是訪問(wèn)指針的例子:


符號(hào)表里有一個(gè)符號(hào)p,它的地址為4040

運(yùn)行時(shí),先取4040的內(nèi)容,即9910。然后在取地址9910的內(nèi)容,即取到指針?biāo)赶虻牡刂返膬?nèi)容。

也就是說(shuō)指針的取值,多了一個(gè)提取步驟

二者差異特性總結(jié)


什么時(shí)候二者可以相互替換

我們常常把指針和數(shù)組混淆,比如以下這種情況,定義為指針,卻使用了數(shù)組的方式來(lái)取值。

char *p = "pointertest";

c = p[i];

定義為指針,但是使用數(shù)組的方式來(lái)取值。我們可以結(jié)合以上兩種方式,來(lái)分析這種情況下的取值過(guò)程:

1.先根據(jù)符號(hào)p的地址,取到符號(hào)p的值,是一個(gè)地址,我們假設(shè)為4040,也就是和上面第二種情況的指針訪問(wèn)一樣。

2.接下來(lái)就是4040+i,得到新的地址值

3.取新的地址的內(nèi)容

同理,取偏移地址的時(shí)候,需要注意變量類型,比如int類型,就是加上 i*4


以下對(duì)于二者可相互替換做一個(gè)總結(jié)

(1)extern char a[];通過(guò)extern聲明的數(shù)組,不能用指針形式替換

(2)數(shù)組定義為 char a[5],不能用指針的形式替換

(3)數(shù)組作為函數(shù)參數(shù),可以使用指針形式替換

(4)在表達(dá)式中,比如c = a[i],這種情況也可以使用指針形式來(lái)替換,因?yàn)樵诒磉_(dá)式中,數(shù)組名a被當(dāng)做指向該數(shù)組第一個(gè)元素的指針,所以可以和指針相互替換。而且數(shù)組下標(biāo)i可以和指針的偏移量等同起來(lái),a[i]等同于 *(a+i)。

自學(xué)C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學(xué)習(xí)成長(zhǎng)

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來(lái)成長(zhǎng)!
另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

C/C++編程筆記:C語(yǔ)言中數(shù)組與指針的異同,兩大核心知識(shí)點(diǎn)分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宜兰县| 抚顺市| 黔西| 交口县| 和林格尔县| 南江县| 贺州市| 无为县| 巩留县| 长治市| 松滋市| 祥云县| 牟定县| 通许县| 淳化县| 刚察县| 金堂县| 西和县| 两当县| 玛纳斯县| 庐江县| 六盘水市| 花莲县| 通榆县| 西和县| 喀喇| 横峰县| 于田县| 东港市| 定西市| 浦城县| 历史| 平和县| 唐河县| 兴仁县| 景泰县| 富川| 汉源县| 石首市| 南乐县| 张家港市|