首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言指針數組詳解:定義、指向字符串/一維/二維數組的實戰應用與記憶體圖解

     編輯:C 語言基礎

指針數組定義

類型 *數組名[長度],如 char *ptr1[4] 含 4 個 char*,int *ptr2[5] 含 5 個 int*。優先級 [] 高於 *,故先成數組再成指針。

三大經典應用場景

  1. 指向字符串:char *ptr1[4] = {"china","chengdu","sichuan","chongqing"}; 每指針指向一字符串常量區,printf("%s", ptr1[i]) 輸出。
  2. 指向一維數組元素:int a[3]={1,2,3}; for(i) ptr2[i]=&a[i]; 印 *ptr2[i] 得 1 2 3。
  3. 指向二維數組行:int b[3][2]={1,2,3,4,5,6}; for(i) ptr2[i]=b[i]; ptr2[i] 指向第 i 行首元素,*ptr2[i] 与 *(ptr2[i]+1) 為該行兩列值。

記憶體關係圖解

  • ptr1[0..3] 分別指向四個字符串首址(常量區)。
  • ptr2[0..2] 指向 a[0..2] 或 b 第 0..2 行首址。
  • 二維情況下 ptr2[i]+1 即同行下一列。

完整程式碼

#include 
#include 
main() {
    char *ptr1[4] = {"china","chengdu","sichuan","chongqing"};
    int i, *ptr2[3], a[3]={1,2,3}, b[3][2]={1,2,3,4,5,6};
    for(i=0;i<4;i++) printf("\n%s", ptr1[i]);
    for(i=0;i<3;i++) ptr2[i]=&a[i];
    for(i=0;i<3;i++) printf("%4d", *ptr2[i]);
    for(i=0;i<3;i++) ptr2[i]=b[i];
    for(i=0;i<3;i++) printf("%4d%4d\n", *ptr2[i], *(ptr2[i]+1));
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved