通过指针访问二维数组的三种方法
程序员文章站
2024-02-29 23:27:34
...
下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针、指针数组、数组指针、指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助。
程序如下:
#include <stdio.h>
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下编译通过,运行结果如下:
上一篇: java 内部类