在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)組指針的基本概念與使用

C語(yǔ)言編程學(xué)習(xí)基地 ? 來(lái)源:C語(yǔ)言編程學(xué)習(xí)基地 ? 作者:C語(yǔ)言編程學(xué)習(xí)基地 ? 2022-08-14 15:39 ? 次閱讀

數(shù)組指針

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

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

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

8b79f596-1add-11ed-ba43-dac502259ad0.png

基本概念

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

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

int *p1[10];int (*p2)[10];

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

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

int (*p2)[10];//p2先和*結(jié)合,表示p2是一個(gè)指針變量//指向一個(gè)大小為10個(gè)整型的數(shù)組//所以p2是數(shù)組指針注:[ ]的優(yōu)先級(jí)高于*,所以必須加上()來(lái)保證p2先和*結(jié)合

1.1、代碼示例

int* parr[6];int* (*pp)[6] = &parr;

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

8ba8cdee-1add-11ed-ba43-dac502259ad0.png

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

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

char arr[5];char (*pa)[5] = &arr;

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ù)組呢?

8bc6db22-1add-11ed-ba43-dac502259ad0.png

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

warning C4048: “int (*)[5]”和“int (*)[3]”數(shù)組的下標(biāo)不同

在正常編寫(xiě)代碼的時(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é)果是相同的

8bd80b5e-1add-11ed-ba43-dac502259ad0.png

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

并不能!

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

8be82f84-1add-11ed-ba43-dac502259ad0.png

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ù)組元素的情況

8c188260-1add-11ed-ba43-dac502259ad0.png

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

int main(){  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };  int (*p)[10] = &arr;  int i = 0;  for (i = 0; i < 10; i++)  {    printf("%d ", *((*p) + i));        //*p-->arr  }  printf("
");  return 0;}

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

8c2c2ae0-1add-11ed-ba43-dac502259ad0.png

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

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

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

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

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

void print(int a[3][5], int r, int c);

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

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

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

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

//main函數(shù)中print(arr,3,5);

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

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

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

void print(int(*p)[5], int r, int c)

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

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

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

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

8c3c82d2-1add-11ed-ba43-dac502259ad0.png

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

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

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

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

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

void print(int(*p)[5], int r, int c){  int i = 0;  for (i = 0; i < r; i++)  {    int j = 0;    for (j = 0; j < c; j++)    {      printf("%d ", *(*(p + i) + j));     }    printf("
");  }}int main(){  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };  print(arr,3,5);  return 0;}

8c4928d4-1add-11ed-ba43-dac502259ad0.png

4練習(xí):判斷

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

4.1 int arr[5]

int arr[5];

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

4.2 int*parr[10]

int*parr1[10];

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

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

4.3 int (*parr2)[10]

int(*parr2)[10];

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

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

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

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

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類型的元素

8c5be186-1add-11ed-ba43-dac502259ad0.png

結(jié)語(yǔ)

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4802

    瀏覽量

    68743
  • 數(shù)組指針
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    5241

原文標(biāo)題:【C語(yǔ)言】指針進(jìn)階第三站,數(shù)組指針!

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中指針數(shù)組數(shù)組指針的區(qū)別

    指針數(shù)組之間存在著緊密的關(guān)系。在本文中,我們將探討指針數(shù)組的關(guān)系、指針算術(shù)和數(shù)組遍歷、多維
    發(fā)表于 08-17 15:29 ?420次閱讀

    指針基本概念和運(yùn)算

    指針基本概念和運(yùn)算8.1 指針基本概念和運(yùn)算 8.2 指針與一維數(shù)組  
    發(fā)表于 03-10 15:40

    數(shù)組基本概念

    數(shù)組是由若干同類元素組成的數(shù)據(jù)表。數(shù)組能表示非常廣泛的數(shù)據(jù)集合,一組相關(guān)的同類數(shù)據(jù)集合能用數(shù)組簡(jiǎn)潔表示。例如,一個(gè)班級(jí)學(xué)生的某門(mén)課程的成績(jī),一行字符,一個(gè)整數(shù)向量,由向量組成的矩陣等。
    發(fā)表于 11-19 16:41 ?0次下載

    數(shù)組指針的詳細(xì)講解

    數(shù)組指針的詳細(xì)講解
    發(fā)表于 10-16 08:44 ?0次下載

    指針數(shù)組的詳細(xì)資料和實(shí)例程序免費(fèi)下載

    指針變量來(lái)訪問(wèn)數(shù)組中任一元素,通常將數(shù)組的首地址稱為數(shù)組指針,而將指向數(shù)組元素的
    發(fā)表于 11-05 17:07 ?4次下載
    <b class='flag-5'>指針</b>與<b class='flag-5'>數(shù)組</b>的詳細(xì)資料和實(shí)例程序免費(fèi)下載

    詳談數(shù)組指針的區(qū)別與聯(lián)系

    詳談數(shù)組指針的區(qū)別與聯(lián)系
    的頭像 發(fā)表于 06-29 15:18 ?2.2w次閱讀
    詳談<b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>的區(qū)別與聯(lián)系

    指針數(shù)組數(shù)組指針的區(qū)別

    這里我們區(qū)分兩個(gè)重要的概念指針數(shù)組數(shù)組指針
    的頭像 發(fā)表于 06-29 15:30 ?2w次閱讀
    <b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>和<b class='flag-5'>數(shù)組</b><b class='flag-5'>指針</b>的區(qū)別

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解函數(shù)<b class='flag-5'>指針</b>、函數(shù)<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>、函數(shù)<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>指針</b>

    C語(yǔ)言指針數(shù)組的區(qū)別

    在C語(yǔ)言教程中我們使用通過(guò)數(shù)組名通過(guò)偏移和指針偏移都可以遍歷數(shù)組,那么指針數(shù)組到底有什么區(qū)別??
    的頭像 發(fā)表于 07-18 16:29 ?1945次閱讀

    二維數(shù)組數(shù)組指針以及指針數(shù)組

    二維數(shù)組數(shù)組指針以及指針數(shù)組
    的頭像 發(fā)表于 08-16 09:02 ?2689次閱讀

    【C語(yǔ)言進(jìn)階】“數(shù)組指針”和“指針數(shù)組”都是啥跟啥?

    【C語(yǔ)言進(jìn)階】“數(shù)組指針”和“指針數(shù)組”都是啥跟啥?
    的頭像 發(fā)表于 08-31 13:21 ?1925次閱讀

    C語(yǔ)言中什么是指針數(shù)組

    在C語(yǔ)言中一個(gè)數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說(shuō),指針數(shù)組中的每一個(gè)元素都存
    的頭像 發(fā)表于 03-10 15:26 ?1811次閱讀

    數(shù)組指針不能混用的情況

    指針基本概念數(shù)組是一組相同類型的元素的集合,而指針是一個(gè)變量,它存儲(chǔ)了一個(gè)地址,該地址指向內(nèi)存中的某個(gè)位置。在 C/C++ 中,數(shù)組
    的頭像 發(fā)表于 12-07 13:46 ?622次閱讀

    數(shù)組指針不相同嗎?數(shù)組指針有哪些區(qū)別

    數(shù)組就是指針指針就是數(shù)組,這樣的言論在評(píng)論區(qū)看到不下于10次。
    的頭像 發(fā)表于 12-13 16:34 ?1564次閱讀
    <b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>不相同嗎?<b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>有哪些區(qū)別

    面試常考+1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開(kāi)發(fā)領(lǐng)域,函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的
    的頭像 發(fā)表于 08-10 08:11 ?928次閱讀
    面試常考+1:函數(shù)<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數(shù)、<b class='flag-5'>數(shù)組</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>
    主站蜘蛛池模板: 免费黄色欧美| 国产精品三级在线观看| 在线播放你懂得| 伊人久久天堂| 亚洲bt天堂| 日本一级高清不卡视频在线| 放荡女同老师和女同学生| 国产未成女年一区二区| 影院在线观看免费| 亚洲综合免费| 中国一级特黄特色真人毛片| 亚洲一区在线免费观看| 日本一区二区不卡在线| 一区二区美女视频| 四虎久久影院| 天天狠狠弄夜夜狠狠躁·太爽了| 天天干夜夜玩| 69美女poren 18| 免费的很黄很色的床小视频| 在线成人| 日韩欧美中文字幕在线视频| 久久久噜噜噜久久| 777777777妇女亚洲| 濑亚美莉vs黑人欧美视频| 在线免费视频观看| 美女扒开尿口给男人桶动态图| 五月综合激情视频在线观看| 欧美一级高清片在线| 国产拍拍1000部ww| 国产精品久久久久久久久| 午夜影院在线视频| 国产欧美日韩va| 热re久久精品国产99热| 天堂色综合| 国产在线观看色| ww欧洲ww在线视频看| 色婷婷六月桃花综合影院| 91亚洲视频在线| 天堂在线视频观看| 好爽~~~~嗯~~~再快点明星| 天堂网在线www资源网|