由于数组在内存里是线性排列的,只要改变指针就可以改变其访问方式,因为指针不仅仅是地址最重要的是步长,其类型确定其内存的解析方式,因此我们可以通过改变其指针类型改变内存的访问方式。
#include<stdio.h> #include<stdlib.h> void main() { int i,j,k; int *p=(int *)malloc(sizeof(int)*40);// 一个一维数组,其在内存是线性的 int (*pp)[8]; //数组指针 int (*ppp)[4][5];// pp=(int (*)[8])p; //以[5][8] 二维数组访问; ppp=(int (*)[4][5])p;//以[2][4][5] 三维数组访问; for(i=0;i<40;i++) { p[i]=i; } printf("二维数组访问:\n"); for(i=0;i<5;i++) { for(j=0;j<8;j++) { printf("%5d",pp[i][j]); } printf("\n"); } printf("\n"); printf("三维数组访问:\n"); for(i=0;i<2;i++) { for(j=0;j<4;j++) { for(k=0;k<5;k++) { printf("%5d",ppp[i][j][k]); } printf("\n"); } printf("\n"); } getchar(); }
时间: 2024-10-05 06:18:10