搞不懂的二维数组指针(打印数组的某一行)

napoleonpan 2003-08-18 05:48:04
#include<iostream.h>
void f(int *t,int n)
{
int *k;
for(k=*(t+n);k<=*(t+n)+2;k++)//错误显示:can not convert int to int *
cout<<*k;
}
void main()
{
int a[3][3]={{1,2,3},
{4,5,6},
{7,8,9}};
int *p=*(a+0);
f(p,1);//打印第1行
}
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-08-18
  • 打赏
  • 举报
回复
#include<iostream.h>
void f(int *t,int n)
{
int *k;
for(;k<=2;k++)//错误显示:can not convert int to int *
cout<<*k;
}
void main()
{
int a[3][3]={{1,2,3},
{4,5,6},
{7,8,9}};
int *p=*(a+0);
f(p,1);
}
leasun 2003-08-18
  • 打赏
  • 举报
回复
a是一个数组,不是指针。
p=&a[0][0];
napoleonpan 2003-08-18
  • 打赏
  • 举报
回复
大家能跟我说说指向二维数组的指针 如:*(a+1)和a+1的区别吗?
我看书上说前者是指第一行第0元素的地址,后者是指第一行的首地址,这两者有什么区别吗?地址值不都一样吗?
hongfeeling 2003-08-18
  • 打赏
  • 举报
回复
你定义的 K是int 指针。
而 *(t+n)等价于t[n],它是int值。
所以出现错误。
for(k=*(t+n);k<=*(t+n)+2;k++)//错误显示:can not convert int to int *
cout<<*k;
改为
for(k=t+(n-1)*3;k<t+n*3;k++)
cout<<*k;
这里的3是每行的列数
blue_coco 2003-08-18
  • 打赏
  • 举报
回复
改:
int *p = *(a+0);

int *p = *(&&a[0][0]);
cdocument 2003-08-18
  • 打赏
  • 举报
回复
void f(int *t,int n)
{
int *k;
for(k=*(t+n);k<=*(t+n)+2;k++)// t是一维指针,t+n 表示第n+1个元素地址,*(t+n)表示第n+1个元素,k是一个指针,当然不行了。

cout<<*k;
}
如果你不将维数传进来,函数中将无法操作。
void f(int *t, int n, int col)
{
for (int i=0; i<col; i++)
cout<<*(t+(n-1)*col+i);
}
napoleonpan 2003-08-18
  • 打赏
  • 举报
回复
//这样也不行
#include<iostream.h>
void f(int *t,int n)
{
int i,j;
for(i=n,j=0;j<=2;j++)
cout<<*(*(t+i)+j);//错误显示:invalid indirection
}
void main()
{
int a[3][3]={{1,2,3},
{4,5,6},
{7,8,9}};
p=*(a+0);
f(p,1);
}

69,369

社区成员

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

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