c语言二维数组用指针表示的问题
答案:4 悬赏:60 手机版
解决时间 2021-03-22 20:10
- 提问者网友:辞取
- 2021-03-22 15:49
c语言二维数组用指针表示的问题
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-03-22 16:25
#include
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4];
p=a;
printf("%d",*(p)[3]);
}
首先你没有理解int (*p)[4];
他的意思就是含有4个指针的数组 由于int a[3][4]只有3行,所以*(p)[3]这个地方就越界了
如果*(p)[2]地址中的值就是17 *(p)[1] 就是9 ,*(p)[0]就是1
如果你要打印7 *((p)[0]+3)追问这个 我的理解是*(p+1)[3]的意思是指针向下移动一行,再向右移动3列,即输出a[1][3]的值。
麻烦列举一下输出这个a[1][3]所有的方法,谢谢。追答a[1][3] ========*(p[1]+3)
p[1]的意思是 取指向第二行的指针 +3的意思就是向后偏移3位就是 你想要的a[1][3]
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4];
p=a;
printf("%d",*(p)[3]);
}
首先你没有理解int (*p)[4];
他的意思就是含有4个指针的数组 由于int a[3][4]只有3行,所以*(p)[3]这个地方就越界了
如果*(p)[2]地址中的值就是17 *(p)[1] 就是9 ,*(p)[0]就是1
如果你要打印7 *((p)[0]+3)追问这个 我的理解是*(p+1)[3]的意思是指针向下移动一行,再向右移动3列,即输出a[1][3]的值。
麻烦列举一下输出这个a[1][3]所有的方法,谢谢。追答a[1][3] ========*(p[1]+3)
p[1]的意思是 取指向第二行的指针 +3的意思就是向后偏移3位就是 你想要的a[1][3]
全部回答
- 1楼网友:罪歌
- 2021-03-22 19:04
#include
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4];
p=a;
printf("%d",*(*p+2));
return 0;
}
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4];
p=a;
printf("%d",*(*p+2));
return 0;
}
//你没有理解多维数组a的意思
- 2楼网友:一秋
- 2021-03-22 18:37
printf("%d",(*p)[3]);
- 3楼网友:梦中风几里
- 2021-03-22 17:47
因为p[3]没有指向a[0][3],你加条语言
printf("%x\t%x\n", p[3], &(a[0][3]));
就知道了。
printf("%x\t%x\n", p[3], &(a[0][3]));
就知道了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯