那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

指針數組的示例說明

C語言編程學習基地 ? 來源:51CTO ? 作者:暮雪年華 ? 2022-08-12 16:27 ? 次閱讀

指針數組

數組是一種類型的數的集合

整型數組的元素都是int類型

指針數組的元素都是指針變量

    int* arr1[10];//整型指針的數組
    char*arr2[10];//一級字符指針的數組
    char** arr3[5];//二級字符指針的數組

參考這一份示意圖

a040e6ec-1a15-11ed-ba43-dac502259ad0.png

示例1:定義多個字符指針

在上一站的字符指針里面,提到了可以直接用指針來創建一個常量字符串

同理,我們可以將多個指針放在一塊,湊成指針數組,一次性創建多個指向常量字符串的指針

a0618e06-1a15-11ed-ba43-dac502259ad0.png

int main(){  char* arr[] = { "abcdef", "qwer", "zhangsan" };  int i = 0;  int sz = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < sz; i++)  {    printf("%s
", arr[i]);  }  return 0;}

示例2:存放數組名的數組

在之前的學習中,我們知道:數組名代表數組首元素的地址

可以說,數組名本質上也是一個指針

既然是指針,就能放進指針數組里面

int main(){  int arr1[] = { 1,2,3,4,5 };  int arr2[] = { 2,3,4,5,6 };  int arr3[] = { 3,4,5,6,7 };
  int* arr[] = {arr1, arr2, arr3};  //arr是指針數組  int i = 0;  for (i = 0; i < 3; i++)  {    int j = 0;    for (j = 0; j < 5; j++)    {      printf("%d ", arr[i][j]);//*(*(arr+i)+j)    }    printf("
");  }
  return 0;}

這串代碼中,我們需要了解的是arr[i][j]和*(*(arr+i)+j)之間的關系

以下內容若有錯誤,還請大家在評論區指正!

arr[i][j]和*(*(arr+i)+j)

它們都是訪問數組的形式,用到了不同的操作符但表達的含義相同:下標為i、j的元素

在內存中,數據的存儲是連續的

創建一個二維數組,可以看到兩行的數據是連續存放在數組里面的

int arr4[2][2]={{1,2},{3,4}};

既然是連續的,我們就可以用指針++的形式來訪問二維數組里面的所有元素

*(arr+i)指向第i行元素*(arr+i)+j指向第i行下標為j的元素的地址*(*(arr+i)+j)再次解引用,得到j元素

數組名的本質是地址,是該數組首元素的地址

二維數組的首元素是第一行,數組名arr就是第一行的地址

我們可以把二維數組的每一行理解為獨立的一個一維數組

這時候,二維數組的形式和上述代碼中int* arr[]數組的形式就相同了

int arr1[] = { 1,2,3,4,5 };  int arr2[] = { 2,3,4,5,6 };  int arr3[] = { 3,4,5,6,7 };  //arr1 arr2 arr3是二維數組里面的每一行  int* arr[] = {arr1, arr2, arr3};  //arr等價于一個二維數組,但有不同


int* arr[]和二維數組的不同

int*arr數組里的元素arr1,arr2,arr3的地址是連續存放的

這里設計到一個新概念:數組指針

將在下一節講解!

a07e3b78-1a15-11ed-ba43-dac502259ad0.png

但是它們對應的各自的數組內數據并不連續

如:arr1和arr2這兩個數組各自元素的地址并不連續

a0969d44-1a15-11ed-ba43-dac502259ad0.png

示例3:存放二級指針的數組

既然一級指針可以放進數組里,二級指針也是指針,同樣也能塞進數組里

下面這串代碼里面的arr2就是一個存放二級指針的數組

#include int main(){  int a = 10;  int* p = &a;  int** pp = &p;  int** arr2[4] = {pp};
  return 0;}

你學會了嗎?下次給大家分享數組指針哦!

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指針
    +關注

    關注

    1

    文章

    481

    瀏覽量

    70610
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    26028

原文標題:【C語言】指針進階第二站:指針數組!

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言中指針數組數組指針的區別

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

    指針數組數組指針的區別

    。判斷數組指針指針數組主要通過運算符的優先級來判斷。int (*p)[4];// 由于( )的優先級高,說明p是一個
    發表于 07-15 21:41

    數組指針的詳細講解

    數組指針的詳細講解
    發表于 10-16 08:44 ?0次下載

    指針數組的詳細資料和實例程序免費下載

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

    詳談數組指針的區別與聯系

    詳談數組指針的區別與聯系
    的頭像 發表于 06-29 15:18 ?2.3w次閱讀
    詳談<b class='flag-5'>數組</b>和<b class='flag-5'>指針</b>的區別與聯系

    指針數組數組指針的區別

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

    理解函數指針、函數指針數組、函數指針數組指針

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

    C語言中指針數組

    #define SIZE 10int arry[SIZE]={0,1,2,3,4,5,6,7,8,9}; //數組名arry表示數組首元素的地址*int p,temp;//可直接初始化定義指針
    發表于 01-13 13:11 ?3次下載
    C語言中<b class='flag-5'>指針</b>與<b class='flag-5'>數組</b>

    C語言指針數組的區別

    在C語言教程中我們使用通過數組名通過偏移和指針偏移都可以遍歷數組,那么指針數組到底有什么區別??
    的頭像 發表于 07-18 16:29 ?1985次閱讀

    二維數組數組指針以及指針數組

    二維數組數組指針以及指針數組
    的頭像 發表于 08-16 09:02 ?2746次閱讀

    【C語言進階】“數組指針”和“指針數組”都是啥跟啥?

    【C語言進階】“數組指針”和“指針數組”都是啥跟啥?
    的頭像 發表于 08-31 13:21 ?1952次閱讀

    C語言中什么是指針數組

    在C語言中一個數組,若其元素均為指針類型數據,稱為指針數組,也就是說,指針數組中的每一個元素都存
    的頭像 發表于 03-10 15:26 ?1874次閱讀

    數組指針不能混用的情況

    數組指針不能混用的情況? 數組指針是 C/C++ 中非常常見的特性和概念。然而,在某些情況下,數組
    的頭像 發表于 12-07 13:46 ?654次閱讀

    數組指針不相同嗎?數組指針有哪些區別

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

    面試???1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針、指針函數、數組指針指針數組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發表于 08-10 08:11 ?989次閱讀
    面試常考+1:函數<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數、<b class='flag-5'>數組</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>數組</b>
    百家乐官网必赢法冯耘| 澳门百家乐官网线上娱乐城| 百家乐节目视频| 舟山星空棋牌下载| 百家乐官网庄闲桌子| 网上百家乐是真的| 百家乐官网分析软件下| 百家乐的如何玩| 石阡县| 百家乐赌注| 百家乐官网休闲游戏| 百家乐讲谈| 日博娱乐| 百家乐网站开户| 鼎尊国际娱乐| 百家乐平台开发| 皇室百家乐官网娱乐城| 中华百家乐的玩法技巧和规则| 皇冠网百家乐官网平台| 百家乐真人投注网站| 百家乐官网最新赌王| 水果机技巧规律| 网上百家乐玩法| 百家乐官网路单免费下载| 大发888客服电话 在线| 百家乐官网翻牌规则| 小孟百家乐的玩法技巧和规则| 真人百家乐官网蓝盾赌场娱乐网规则| 金逸太阳城团购| 蓝盾百家乐官网具体玩法| 黎川县| 全讯网qtqnet| 做生意选店铺位置| 百家乐官网前四手下注之观点| 大发888网页登录帐号| 百家乐视频计牌器| 七匹狼百家乐官网的玩法技巧和规则 | 有钱人百家乐的玩法技巧和规则| 香河县| 大发888游戏平台 df888ylcxz46 | 百家乐方案|