前辈看一个程序错哪里了?
#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;
printf("please enter row and colum:");
scanf("%d,%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
return 0;
}
[解决办法]
p+i没什么道理,想直接操作地址不安全
[解决办法]
printf("a[%d,%d]=%d\n",i,j,*((p+i*j)+j));
[解决办法]
printf("a[%d,%d]=%d\n",i,j,*(*(p+i*4)+j));
[解决办法]
printf("a[%d,%d]=%d\n",i,j,*((p+i*4)+j));
还有2楼说的不安全
[解决办法]
#include <stdafx.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4],i,j;
p=a;
printf("please enter row and colum:");
while(scanf("%d,%d",&i,&j)!=EOF)
{
if (i>2
[解决办法]
j>3)
{
printf("input wrong!\n");
getchar();
break;
}
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
getchar();
}
getchar();
}
我可以正确的看到每一个元素啊,怎么了,哪里错了?
[解决办法]
scanf("%d,%d",&i,&j);
输入是用 , 分隔
下标从 0 开始,别越界
程序没有大问题
[解决办法]
#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;
printf("please enter row and colum:");
while(scanf("%d,%d",&i,&j) != 2);
//scanf("%d,%d",&i,&j);
fflush(stdin);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i-1)+j-1));////你认为错的是这里吧???
return 0;
}
楼上正解,下标从 0 开始,别越界
[解决办法]
#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;
printf("please enter row and colum:");
scanf("%d%d",&i,&j); //这里多了个逗号
printf("a[%d,%d]=%d\n",i,j,p[i][j]); //重点是这个,p不是二级指针
printf("%d\n",a[i][j]);
return 0;
}
[解决办法]
你的代码是对的。
只是scanf("%d,%d",&i,&j);输入时,比如1,2这样输才是对的。
[解决办法]
还有 数组这样写更好printf("a[%d,%d]=%d\n",i,j,p[i][j]);
[解决办法]
代码没问题
可能是你的输入有问题
[解决办法]
++
------解决方案--------------------