首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-09-05 
关于二维指针编译报错的问题新学习C++语言在C++ Primer的二维数组指针一节按文写了个程序,为何在for (int

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

谢谢了!

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};    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;}


[解决办法]
如果楼主是想通过二维指针方式访问二维数组的内容,以上的例子可以这样:
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;    // 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;} 

热点排行