int main()
{
int i;
// 分配内存空间
char** p2 = (char**)malloc(sizeof(char*)*20);
for (i = 0; i < 20; ++i) {
p2[i] = (char*)malloc(sizeof(char)*10);
}
// 使用p2[0], p2[1], ..., p2[19],每一个都是具有10个字符元素的字符数组
// 准备释放内存空间
for (i = 0; i < 20; ++ch) {
free(p2[i]); // 释放一级指针指向的内存
}
free(p2); // 释放二级指针指向的内存
}
//在堆中开辟一个2×3×4×5的4维int数组
int ****p;
int h,i,j,k;
p=(int ****)malloc(2*sizeof(int ***));
if (NULL==p) return;
for (h=0;h<2;h++) {
p[h]=(int ***)malloc(3*sizeof(int **));
if (NULL==p[h]) return;
for (i=0;i<3;i++) {
p[h][i]=(int **)malloc(4*sizeof(int *));
if (NULL==p[h][i]) return;
for (j=0;j<4;j++) {
p[h][i][j]=(int *)malloc(5*sizeof(int));
if (NULL==p[h][i][j]) return;
}
}
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
p[h][i][j][k]=h*60+i*20+j*5+k;
}
}
}
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
printf(" %3d",p[h][i][j][k]);
}
printf("\n");
}
printf("--------------------\n");
}
printf("=======================\n");
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
free(p[h][i][j]);
}
free(p[h][i]);
}
free(p[h]);
}
free(p);
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
//--------------------
// 20 21 22 23 24
// 25 26 27 28 29
// 30 31 32 33 34
// 35 36 37 38 39
//--------------------
// 40 41 42 43 44
// 45 46 47 48 49
// 50 51 52 53 54
// 55 56 57 58 59
//--------------------
//=======================
// 60 61 62 63 64
// 65 66 67 68 69
// 70 71 72 73 74
// 75 76 77 78 79
//--------------------
// 80 81 82 83 84
// 85 86 87 88 89
// 90 91 92 93 94
// 95 96 97 98 99
//--------------------
// 100 101 102 103 104
// 105 106 107 108 109
// 110 111 112 113 114
// 115 116 117 118 119
//--------------------
//=======================
//
一个二级指针及多级指针的示例
最新推荐文章于 2023-08-14 20:29:58 发布