通过指针访问二维数组的三种方式
/*
*通过指针访问二维数组的三种方式
*2019-11-29
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[4][4];
int i, j;
int *pInt; //普通指针
int (*pIntPtr)[4]; //数组指针
int *pIntlist[4]; //指针数组
pInt = a[0];
for(int i = 0; i < 4; i++)
{
pIntlist[i] = a[i];
}
//指针初始化
pInt = a[0];
pIntPtr = a;
for(int i = 0; i < 4; i++)
{
pIntlist[i] = a[i];
}
//通过普通指针初始化二维数组
for(i = 1; i <= 16; i++)
{
*pInt = i;
pInt++;
}
printf("by pIntPtr:\n");
for(int i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
printf("%3d ", *(*pIntPtr + j));
}
printf("\n");
pIntPtr++;
}
printf("by pIntPtrList:\n");
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
printf("%3d ", *(pIntlist[i] + j));
}
printf("\n");
}
return 0;
}