一维数组:int a[5]; 指针表示: int *p = a
;
二维数组:int a[4][5]; 指针表示: int (*p)[5] = a
; //p表示指向数组的行指针
三维数组:int a[3][4][5];指针表示: int (*p)[4][5] = a
;//p表示指向数组的面指针
#include <stdio.h>
#include <stdlib.h
/*
* @brief 数组指针 打印三维数组元素,[]法
* @param() int (*p)[4][5]
* @return void
*/
void print3DArray1(int (*p)[4][5])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 5; k++)
{
printf("%4d", p[i][j][k]);
}
printf("\n");
}
printf("\n");
}
}
/*
* @brief 数组指针 打印三维数组元素,下标法
* @param() 数组指针 int (*p)[4][5]
* @return void
*/
void print3DArray2(int (*p)[4][5])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 5; k++)
{
printf("%4d", *(*(*(p + i) + j) + k));
}
printf("\n");
}
printf("\n");
}
}
void main()
{
int a[3][4][5];
int count = 0;
//使用指针进行线性初始化
for (int* p = &a[0][0][0]; p < &a[0][0][0] + 60; p++)
{
*p = count;
count++;
}
int(*p)[4][5] = a;
print3DArray1(p);
print3DArray2(p);
system("pause");
}