怎么使用指向数组的指针数组求一个随意赋值的正方体的对角线的和
定义一个三维指针和一个指向数组的指针数组
怎么用这个指向数组的指针数组表示这个三维指针
还有就是这个指向数组的指针数组怎么分配空间、
求大神指点
[解决办法]
指向数组的指针数组
三维指针……
a是个三级指针int*** a;
d是个指向数组的指针数组
int b3[3]={0};
int b4[4]={0};
int** c3 = &b3;
int** c4 = &b4;
int** d[2] = {c3,c4};
这样就可以安全使用上例中的任意级别的指针
怎么用这个指向数组的指针数组表示这个三维指针?
——这不可能 数组元素倒可能表示指针(在本例中 元素和三级指针不是一类的) 但是数组本身不可能
还有就是这个指向数组的指针数组怎么分配空间?
——看你这意思 好像是想在堆上分配 但是从题意来看 不可能
你这个指向数组的指针数组
那么元素是指向数组的指针,这些指针指向的是数组,数组是在栈中的 不是在堆上的
所以 不存在new分配空间这一说
[解决办法]
仅供参考
//在堆中开辟一个3×4×5的3维int数组
#include <stdio.h>
#include <malloc.h>
int ***p;
int i,j,k;
void main() {
p=(int ***)malloc(3*sizeof(int **));
if (NULL==p) return;
for (i=0;i<3;i++) {
p[i]=(int **)malloc(4*sizeof(int *));
if (NULL==p[i]) return;
for (j=0;j<4;j++) {
p[i][j]=(int *)malloc(5*sizeof(int));
if (NULL==p[i][j]) return;
}
}
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
p[i][j][k]=i*20+j*5+k;
}
}
}
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
printf(" %2d",p[i][j][k]);
}
printf("\n");
}
printf("---------------\n");
}
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
free(p[i][j]);
}
free(p[i]);
}
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
//---------------