C提高4--數組指針

數組指針

int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};  //3個a[4]的一維數組
//定義數組指針變量  
//指向一維數組的整個數組首地址
int (*p)[4];
//p = &a; //整個二維數組首地址 結果和p = a;一樣
p = a;  //第0行首地址
printf("p:%d,p+1:%d",p,p+1);  //會發現打印出來的p的地址和p+1的地址相差4*4=16

首行首元素地址和首行首地址區別

a:代表第0行首地址
a+i(或&a[i]):代表第i行首地址
*(a+i)(或者a[i]):代表第i行首元素地址
*(a+i)+j(或者&a[i][j]):代表第i行第j列元素的地址
((a+i)+j)(或者a[i][j]):代表第i行第j列元素的值

二維數組作爲函數參數

利用數組指針作形參

void printArray(int (*a)[4])
{
    int i =0;
    int j=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("%d",a[i][j]);
        }
        printf("\n");
    }

}


int main()
{
    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    printArray(a);
    printf("\n");
    return 0;
}

用typedef定義數組指針類型

c
typedef int (*P)[10]; //數組指針類型
P p; //用定義的數組指針類型P來定義數組指針變量p

也可以用typedef來定義數組類型:
“`c
typedef int A[10]; //A:數組類型
A b; //等價於int b[10],數組類型變量,普通變量
A *p; //也就是int (*p)[10],數組類型定義數組指針變量

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章