快帮帮我---》为什么这个很简单的程序,在指针上通不过?tc2.0

soluma 2002-11-13 10:37:50
main()
{int a[3][5],i,j,*p=a;


for (i=0;i<3;i++)
for (j=0;j<5;j++)
scanf("%d",p+i*3+j);
for (i=0;i<3;i++)
{ for (j=0;j<5;j++)
printf("%10d",*(p+i*3+j));
printf("\n"); }
}
为什么这个很简单的程序,在指针上通不过?tc2.0
他怎么老说指针类型不对什么的……
问题出在哪里了???


...全文
26 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
soluma 2002-11-14
  • 打赏
  • 举报
回复
...
black_snail 2002-11-14
  • 打赏
  • 举报
回复
a是二级指针,而p定义为一级指针,所以p要指向阿a
的第一维
winmains 2002-11-14
  • 打赏
  • 举报
回复
a是二维数组,应用 *p=a[0];二维数组在内存中是按单元的行序排列的
如表示a[2][3],则可写为 *(p+2*(每行单元数目)+3)
x2jack 2002-11-13
  • 打赏
  • 举报
回复
可以改写为:
main()
{int a[3][5],i,j,*p=a;


for (i=0;i<3;i++)
for (j=0;j<5;j++)
scanf("%d",p++);
p=a;
for (i=0;i<3;i++)
{ for (j=0;j<5;j++)
printf("%10d",*p++);
printf("\n"); }
}
因为你那样是p+1而int 是二个字节p+2
newgina 2002-11-13
  • 打赏
  • 举报
回复
int**指向的是整形指针
int*指向的是整形数
指向指针的指针 当让可以指向指针
可指向整形的指针不可以指向指针
newgina 2002-11-13
  • 打赏
  • 举报
回复
是3行5列应该这样改:

#include<stdio.h>


void main()
{
int a[3][5],i,j,*p=&a[0][0];
for (i=0;i<3;i++)
for (j=0;j<5;j++)
scanf("%d",p+i*5+j);
for (i=0;i<3;i++)
{
for (j=0;j<5;j++)
printf("%10d",*(p+i*5+j));
printf("\n");
}
}
soluma 2002-11-13
  • 打赏
  • 举报
回复
可书上说指向二唯数组的指针是这样定义的呀

**p不是指针的指针了吗?
mrbeaver 2002-11-13
  • 打赏
  • 举报
回复
p是int*,a是int**,类型不对
soluma 2002-11-13
  • 打赏
  • 举报
回复
好象数组打印出来有点问题啊
输入1 2 3 4 5 6 7 8 9 10 11 12 13 14 15《enter》
有几个消失了呀
newgina 2002-11-13
  • 打赏
  • 举报
回复
改成这样可以:
#include<stdio.h>


void main()
{
int a[3][5],i,j,*p=&a[0][0];
for (i=0;i<3;i++)
for (j=0;j<5;j++)
scanf("%d",p+i*3+j);
for (i=0;i<3;i++)
{
for (j=0;j<5;j++)
printf("%10d",*(p+i*3+j));
printf("\n");
}
}
MasterProgrammer 2002-11-13
  • 打赏
  • 举报
回复
*p=a[0];

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧