下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针、指针数组、数组指针、指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助。

程序如下:

#include

int main()

{

int i, j;

int score[3][4] = {

{65,67,70,60},

{80,87,90,81},

{90,99,100,98}};

//第一种方法,二维数组当成一维数组来访问

int *p;

printf("方法1,二维数组当成一维数组来访问:\n");//换行

p = score[0];//或者&score[0][0],都可以。

for(i = 0; i < 3 * 4; i++)

printf("%4d,", *(p + i));

printf("\n");//换行

//第二种方法,通过数组指针来访问

int (*pr)[4];//数组指针

printf("\n方法2,通过数组指针来访问:\n");//换行

pr = score;

for(i = 0; i < 3; i++)

{

for(j = 0; j < 4; j++)

printf("%4d,", *(*(pr + i) + j));

printf("\n");//换行

}

//第三种方法,通过指向指针的指针+指针数组来访问

int **pt;//指向指针的指针

int *ptt[3];//指针数组

printf("\n方法3,通过指向指针的指针+指针数组来访问:\n");//换行

for(i = 0; i < 3; i++)

ptt[i] = score[i];//给指针数组赋值

pt = ptt;//需要通过指针数组来转换一下

for(i = 0; i < 3; i++)

{

for(j = 0; j < 4; j++)

printf("%4d,", *(*(pt + i) + j));

printf("\n");//换行

}

}

具体就不再解释了,注释已经写得比较明白了。程序在Code::Blocks下编译通过,运行结果如下:

苹果个人开发者账号的费用
如何在 iPhone 或 iPad 上设置个人热点