#include<stdio.h> int main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int

#include<stdio.h>
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4],i,j;
p=a;
scanf("%d,%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
return 0;
}
要输出任意一行一列的元素,有错怎么改啊?
最新回答
陌上柳絮倾城雪

2024-09-14 03:33:14

printf("a[%d,%d]=%d\n",i,j,*(*(p+i-1)+j-1));
◎黛颜

2024-09-14 04:26:17

printf("a[%d,%d]=%d\n",i,j,*(p+i*4+j));
把阳光剪成窗纸贴在心口

2024-09-14 03:45:21

好着啊,我这里运行一切正常。你那里什么错误?
追问
哦对,要是把int (*p)[4],i,j;改为int*p,i,j,就会有错,为什么啊
追答
如果用int *p的话,不能直接指向a,a是个2维数组类型(可看成int **a, 但不等价),它的地址和p类型不符。
但可以做如下修改

p=a[0] // 两者类型匹配
printf("a[%d,%d]=%d\n",i,j,*(p+i*4+j));