用指向数组的指针表示多维数组
#include <stdio.h>#include <stdlib.h>
#define N 2
#define M 2
int main()
{
//int i=0,j=1;
int a[M][N][2] = {1,2,3,4,5,6,7,8},(*p)[2]=a[0],(*q)[N][2]=a;
printf("%p\n",&((*p)[2]));
printf("%p",&((*q)[N][2]));
return 0;
}
当把&((*p)[2]) 换成p时,结果变了,为什么?
此程序最终输出结果相同,但是a[0]和a的含义应该不同啊,这是什么原因?
下面这个问题是我遇到书上一个问题的,上面这个是我想检测指针指向的地址
#include <stdio.h>
#include <stdlib.h>
#define I 2
#define J 3
#define K 4
int main()
{
int v[I][J][K],(*P)[J][K]=v,(*p1)[K]=v[0],n=1;
int i,j,k;
for(i=0;i<I;i++)
for(j=0;j<J;j++)
for(k=0;k<K;k++)
{
*(*(p1+j)+k+i*j*k) = n++;//输入v[i][j][k],最终输出不对
//*(*(*(p+i)+j)+k) = n++;
}
for(i=0;i<I;i++)
for(j=0;j<J;j++)
for(k=0;k<K;k++)
printf("%4d",*(*(p1+j)+k+i*j*k));//表示v[i][j][k],实际不对
// printf("%4d",*(*(*(p+i)+j)+k));
return 0;
}
[此贴子已经被作者于2017-12-11 14:14编辑过]