关于二维指针编译报错的问题

s2432971 2012-08-13 10:54:37
新学习C++语言 在C++ Primer的二维数组指针一节按文写了个程序,为何在for (int *k;k!=ip+3;k++)这段编译报错呢?
提示无法从“int_array (*)”到“int *”的转换,请问该怎么写?为什么呢?

谢谢了!


#include <cstdlib>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
int ia[2][3]={1,2,3,4,5,6};
typedef int int_array[3];
int_array *ip = ia;
cout<<ip<<" "<<*ip<<" "<<**ip<<endl;
for ( ;ip!=ia+2;ip++)
{
for (int *k;k!=ip+3;k++)
{
cout<<*k<<" ";
}
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
s2432971 2012-08-13
  • 打赏
  • 举报
回复
谢谢啦![Quote=引用 3 楼 的回复:]

如果楼主是想通过二维指针方式访问二维数组的内容,以上的例子可以这样:
C/C++ code
#include <cstdlib>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
int ia[2][3]={1,2,3,4,5,6};

int (*p)[3] = ia; ……
[/Quote]
blldw 2012-08-13
  • 打赏
  • 举报
回复
如果楼主是想通过二维指针方式访问二维数组的内容,以上的例子可以这样:
#include <cstdlib>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
int ia[2][3]={1,2,3,4,5,6};

int (*p)[3] = ia; // p的类型为 typedef int int_array[3] 的指针类型
int (*pc)[3] = p;
for (; pc != p + 2; pc++) { // 两行数组,每个数组3个元素
for (int i = 0; i < 3; ++i) {
std::cout << (*pc)[i] << std::endl; // (*pc)将指针类型转换为数组(int[3]),再通过
} // 索引访问元素
}

system("PAUSE");
return EXIT_SUCCESS;
}


另外,可以参考指针专题: http://blog.csdn.net/blldw/article/details/4941528
s2432971 2012-08-13
  • 打赏
  • 举报
回复
已解决了。。。。。自己的错
s2432971 2012-08-13
  • 打赏
  • 举报
回复
大侠帮我看看好么

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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