C语言,二维数组指针
求大佬解答下,为什么最后同样用地址来输出元素数,在主函数直接打印元素值是对的,而在子函数打印出来确是错的,不知道是不是形参实参的问题。在子函数中,我的理解是二维数组首地址传递过去了,打印应该是*(*(a+i)+j)),但是系统报错。。{:5_107:}
//例题3.通过输入指定行数和列数,打印二维数组对应指定行,列的那一个元素的值。
void main()
{
void print(int*a,int i,int j);
int (*p),i,j,c,a,b;
p=c;
printf("Please input 12 numbers:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",*(p+i)+j);
}
}
printf("Please input row number and line number:\n");
while(scanf("%d %d",&a,&b)!=2||(a<0||a>2)||(b<0||b>3))
{
printf("Illegal input!!\nPlease input again!!\n");
}
print(c,a,b);
/*printf("%d\n",*(*(c+a)+b));*/
}
void print(int *a,int i,int j)
{
printf("%d\n",(*(a+i)+j));
} #include <stdio.h>
int main()
{
void print(int a[],int i,int j);
int (*p),i,j,c,a,b;
p=c;
printf("Please input 12 numbers:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",*(p+i)+j);
}
}
printf("Please input row number and line number:\n");
while(scanf("%d %d",&a,&b)!=2||(a<0||a>2)||(b<0||b>3))
{
printf("Illegal input!!\nPlease input again!!\n");
}
print(c,a,b);
/*printf("%d\n",*(*(c+a)+b));*/
}
void print(int a[],int i,int j)
{
printf("%d\n",*(*(a+i)+j));
} 本帖最后由 baige 于 2020-8-6 21:32 编辑
详情请看
https://www.cnblogs.com/Ager/archive/2015/09/10/4799075.html #include <stdio.h>
int main()
{
void print(int (*a),int i,int j);
int (*p),i,j,c,a,b;
p=c;
printf("Please input 12 numbers:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",*(p+i)+j);
}
}
printf("Please input row number and line number:\n");
while(scanf("%d %d",&a,&b)!=2||(a<0||a>2)||(b<0||b>3))
{
printf("Illegal input!!\nPlease input again!!\n");
}
print(c,a,b);
/*printf("%d\n",*(*(c+a)+b));*/
}
void print(int (*a),int i,int j)
{
printf("%d\n",*(*(a+i)+j));
}
页:
[1]