指向二维数组的指针

napoleonpan 2003-08-18 11:38:01
//打印出某一指定的二维数组元素
#include<iostream.h>//这个是正确的
void main()
{
int i,j;
int a[2][3]={{1,2,5},
{3,4,6}};
int (*p)[3];
p=a;
cin>>i>>j;
cout<<*(*(p+i)+j);
}


#include<iostream.h>//这个程序错误太多,根本不能执行
void f(int *t)//我只是把上面的程序一部分移到这个函数里来,为什么就错了.
{
int i,j;
cin>>i>>j;
cout<<*(*(t+i)+j);
}
void main()
{
int a[2][3]={{1,2,5},
{3,4,6}};
int (*p)[3];
p=a;
f(p);
}
...全文
36 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
panther8888 2003-08-21
  • 打赏
  • 举报
回复
指针是比较麻烦一点,不过只要多下点功夫搞定它也不是很困难,该说的上面的兄弟已经说过了,我也就不再重复了,祝你好运!
如果有兴趣可以加我QQ:43827457
longki 2003-08-21
  • 打赏
  • 举报
回复

将f(p)改为f(&p)试试,若还不行的话,再进一步将void f(int *t)改成 void f(int **t)试试!
foolfox008 2003-08-21
  • 打赏
  • 举报
回复
同意 bblack()
不同类型的指针不能随便转换
程序中声明 p是指向int型
参数中 p是个指向数组的指针
bblack 2003-08-21
  • 打赏
  • 举报
回复
改一改:int (*p)[4];
p=a+0;
void f1(int (*t)[4],int n)//打印第n行
//这里(*t)[4],需要传递一个二维数组
napoleonpan 2003-08-19
  • 打赏
  • 举报
回复
//更正之后还是错误
#include<iostream.h>
void f(int *t[3])
{
int i,j;
cin>>i>>j;
cout<<*(*(t+i)+j);
}
void main()
{
int a[2][3]={{1,2,5},
{3,4,6}};
int (*p)[3];
p=a;
f(p);//错误显示:cannot conver int to int **
}
napoleonpan 2003-08-19
  • 打赏
  • 举报
回复
//这个程序错在哪里?
#include<iostream.h>
void f1(int (*t)[4],int n)//打印第n行
{
int i;
for(i=0;i<4;i++)
{
cout<<*(*(t+n)+i);
}
}
void main()
{
int a[3][4]={{1,2,3,4},
{5,6,7,8},
{9,0,1,2}};
int *p;
p=*(a+0);
f1(p,2);//错误显示:cannot convert int* to int(*)[4]
}
napoleonpan1 2003-08-19
  • 打赏
  • 举报
回复
是优先级搞错了
tonybaobao 2003-08-19
  • 打赏
  • 举报
回复
void f(int (*t)[3])//改成这样就好了
Jinhao 2003-08-18
  • 打赏
  • 举报
回复
void f(int (*t)[3]) //给编译器讲,这是一个二维数组
{
int i,j;
cin>>i>>j;
cout<<*(*(t+i)+j);
}

69,371

社区成员

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

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