/**
通过指针来访问一维数组,二维数组,多维数组
*/
#include<stdio.h>
const int COLS=3;
const int COUNT=4;
//通过一级指针,计算偏移量来遍历一维数组
void printSingleDimensionalArray(int *data,int data_len);
//通过一级指针,计算偏移量来遍历二维数组:
void printDoubleDimensionalArray(int *array,int rows,int cols);
//通过一级指针,计算偏移量来遍历三维数组:
void printThreeDimensionalArray(int *array_3,int rows,int cols,int count);
//使用指向二维数组的指针来遍历三维数组
void printThreeDimensionalArray2(int (*p)[COLS][COUNT],int rows);
void main()
{
int data[]={1,2,3,4,5,6,7,8,9};
int data_len=sizeof(data)/sizeof(data[0]);
printf("data[6]=%d\n",*(data+6));//7
printf("一维数组data:\n");
printSingleDimensionalArray(data,data_len);
int array[2][3]={{1,2,3},{4,5,6}};
printf("二维数组array:\n");
printDoubleDimensionalArray(array,2,3);
int count=0;
int array_3[2][3][4];
int i,j,k;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
array_3[i][j][k]=count++;
}
}
}
printf("三维数组array_3:\n");
printThreeDimensionalArray(array_3,2,3,4);
//三维数组的初始化
int array_33[2][3][4]=
{
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
},
{
{13,14,15,16},
{17,18,19,20},
{21,22,23,24},
}
};
printf("三维数组array_33:\n");
printThreeDimensionalArray(array_33,2,3,4);
printf("三维数组array_33:\n");
printThreeDimensionalArray2(array_33,2);
}
//通过一级指针,计算偏移量来遍历一维数组
void printSingleDimensionalArray(int *data,int data_len)
{
int i;
for(i=0;i<data_len;i++)
printf("%4d",*(data+i));//7
printf("\n");
}
//通过一级指针,计算偏移量来遍历二维数组:
void printDoubleDimensionalArray(int *array,int rows,int cols)
{
int i,j;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{//通过一位指针,计算偏移量来遍历二维数组:
printf("%4d",*(array+i*cols+j));
}
printf("\n");
}
}
//通过一级指针,计算偏移量来遍历三维数组:
void printThreeDimensionalArray(int *array_3,int rows,int cols,int count)
{
int i,j,k;
for(i=0;i<rows;i++)
{
printf("{\n");
for(j=0;j<cols;j++)
{
for(k=0;k<count;k++)
{
// array[i][j][k]=count++;
// printf("%4d",array_3[i][j][k]);
printf("%4d",*(array_3+i*3*4+j*4+k));
}
printf("\n");
}
printf("}\n");
}
}
//使用指向二维数组的指针来遍历三维数组
void printThreeDimensionalArray2(int (*p)[COLS][COUNT],int rows)
{
int i,j,k;
for(i=0;i<rows;i++)
{
printf("{\n");
for(j=0;j<COLS;j++)
{
for(k=0;k<COUNT;k++)
{
// array[i][j][k]=count++;
printf("%4d",p[i][j][k]);
// printf("%4d",*(array_3+i*3*4+j*4+k));
}
printf("\n");
}
printf("}\n");
}
}
结果:
data[6]=7
一维数组data:
1 2 3 4 5 6 7 8 9
二维数组array:
1 2 3
4 5 6
三维数组array_3:
{
0 1 2 3
4 5 6 7
8 9 10 11
}
{
12 13 14 15
16 17 18 19
20 21 22 23
}
三维数组array_33:
{
1 2 3 4
5 6 7 8
9 10 11 12
}
{
13 14 15 16
17 18 19 20
21 22 23 24
}
三维数组array_33:
{
1 2 3 4
5 6 7 8
9 10 11 12
}
{
13 14 15 16
17 18 19 20
21 22 23 24
}
Process returned 2 (0x2) execution time : 0.312 s
Press any key to continue.