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

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

【C語(yǔ)言】指針進(jìn)階第三站,數(shù)組指針!

2022-08-13 15:33 作者:C語(yǔ)言編程__Plus  | 我要投稿

數(shù)組指針

整型指針:指向整型的指針

字符指針:指向字符的指針

數(shù)組指針:指向數(shù)組的指針


基本概念

下面哪個(gè)是數(shù)組指針呢?

指針數(shù)組和數(shù)組指針的概念很容易混淆,一定要分清楚哦!

p1是指針數(shù)組,每個(gè)元素的類型是int*

p2是數(shù)組指針,每個(gè)元素的類型是int(*)[10]


1.1、代碼示例


pp是一個(gè)數(shù)組指針,類型是int*(*)[6],存放的是int*類型的數(shù)組,該數(shù)組有6個(gè)元素


一般情況下,去掉變量名,剩下的即為變量類型

如:int* (*pp)[6]去掉變量名pp,變量類型為int*(*)[6]


pa也是一個(gè)數(shù)組指針,變量類型為char(*)[5],指向char類型的數(shù)組,該數(shù)組元素個(gè)數(shù)為5

1.2、錯(cuò)誤示范

你肯定會(huì)有一個(gè)疑問(wèn),變量類型為int(*)[5]的數(shù)組指針,能否指向數(shù)組元素為3或者6的數(shù)組呢?


程序能夠正常編譯,但是會(huì)報(bào)出如下警告

在正常編寫代碼的時(shí)候,我們還是得保證數(shù)組指針和原數(shù)組的元素個(gè)數(shù)一致!


arr和&arr的區(qū)別

在進(jìn)一步了解數(shù)組指針之前,我們需要了解arr和&arr的區(qū)別

當(dāng)我們用%p打印arr和&arr時(shí),會(huì)發(fā)現(xiàn)它們的結(jié)果是相同的


但這能說(shuō)明arr和&arr等價(jià)了嗎?

并不能!

再來(lái)看看下面這串代碼


arr+1跳過(guò)4個(gè)字節(jié),一個(gè)元素int的大小

&arr+1跳過(guò)40個(gè)字節(jié),整個(gè)數(shù)組的大小

其實(shí)&arr和arr雖然指向的地址值相同,但是意義不同!

&arr表示的是數(shù)組的地址,是int(*)[10]類型

arr表示數(shù)組首元素的地址,是int*類型

數(shù)組的地址+1,跳過(guò)整個(gè)數(shù)組的大小

所以&arr+1和&arr的差值為40

對(duì)應(yīng)的int(*p)[5]和int* p1也有不同

p接收的是&arr,整個(gè)數(shù)組的地址

p1接收arr,數(shù)組首元素的地址


數(shù)組指針的使用

3.1打印一維數(shù)組

下面這串代碼是用整型指針打印數(shù)組元素的情況


除了整型指針外,我們可以利用數(shù)組指針打印元素


*p等價(jià)于arr,arr+i等價(jià)于&arr[i],對(duì)arr+i解引用就是arr[i]


但是這種方式實(shí)際上是把簡(jiǎn)單問(wèn)題復(fù)雜化了:我們本來(lái)就可以用int*指針來(lái)打印數(shù)組元素,為何要利用數(shù)組指針來(lái)多此一舉呢?

所以在一維數(shù)組里面,我們一般不會(huì)這么寫

3.2、打印二維數(shù)組

假設(shè)我現(xiàn)在需要一個(gè)print函數(shù)來(lái)打印二維數(shù)組

在之前,我們一般會(huì)想到用這張方式傳入二維數(shù)組

當(dāng)我們想用數(shù)組指針的時(shí)候,情況就有些變化了

數(shù)組名是數(shù)組首元素的地址

二維數(shù)組的首元素是第一行

二維數(shù)組的數(shù)組名表示第一行的地址

這里prinf里面的arr就需要用數(shù)組指針來(lái)接收

該二維數(shù)組是3行5列,每一行都有5個(gè)元素,是一個(gè)int[5]的數(shù)組

對(duì)應(yīng)的數(shù)組指針為int(*)[5]類型

這里的p指針指向的是二維數(shù)組第一行的地址

*p:對(duì)p直接解引用

相當(dāng)于拿道了第一行元素的地址(把第一行看作數(shù)組,也就是數(shù)組的地址)

相當(dāng)于是二維數(shù)組第一行首元素的地址


對(duì)(p+i)解引用,就能拿到第i行第一個(gè)元素的地址

*(p+i)+j第i行第j個(gè)元素的地址

*(*(p+i)+j)第i行第j個(gè)元素

這一部分和上篇博客指針數(shù)組的內(nèi)容相似

最終的函數(shù)實(shí)現(xiàn)如下


4練習(xí):判斷

這一站最重要的就是區(qū)別指針數(shù)組和數(shù)組指針

4.1 int arr[5]

arr是一個(gè)整型數(shù)組,有5個(gè)元素,每個(gè)元素是int類型的

4.2 int*parr[10]


parr1是一個(gè)數(shù)組,數(shù)組有10個(gè)int*類型的元素

所以parr1是指針數(shù)組

4.3 int (*parr2)[10]


parr2和*結(jié)合,表示parr2是一個(gè)指針

去掉parr2即為它的變量類型int(*)[10]

所以parr2是一個(gè)數(shù)組指針

4.4 int(*parr3[10])[5]

[]的優(yōu)先級(jí)高于*

parr3先和[]結(jié)合,說(shuō)明parr3是一個(gè)數(shù)組

該數(shù)組有10個(gè)元素,每一個(gè)元素都是一個(gè)數(shù)組指針,類型是int(*)[5]

該數(shù)組指針指向的數(shù)組有5個(gè)int類型的元素


結(jié)語(yǔ)

第三站數(shù)組指針到這里就結(jié)束啦!

為了幫助大家,輕松,高效學(xué)習(xí)C語(yǔ)言/C++,給大家分享我收集的資源,從最零基礎(chǔ)開(kāi)始的,幫助大家在學(xué)習(xí)C語(yǔ)言的道路上披荊斬棘!

微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地

C語(yǔ)言零基礎(chǔ)入門教程(83集全)

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!大家也要把握住大學(xué)的時(shí)光,抓住成長(zhǎng)的每一次機(jī)會(huì)哦~

編程學(xué)習(xí)書籍分享:

編程粉絲交流:




【C語(yǔ)言】指針進(jìn)階第三站,數(shù)組指針!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
漳平市| 镇巴县| 昌乐县| 门源| 竹北市| 吉木乃县| 曲阳县| 邯郸县| 历史| 普格县| 澳门| 彰武县| 郓城县| 屏南县| 清水县| 巴东县| 徐州市| 东乌| 贵南县| 綦江县| 赣州市| 曲周县| 石狮市| 大名县| 永春县| 田林县| 肇源县| 日喀则市| 东明县| 阳春市| 元氏县| 金堂县| 永新县| 密云县| 开封市| 德安县| 龙里县| 曲阳县| 皮山县| 伊春市| 土默特右旗|