2014-09-24 99 views
-2

这段代码可以在C中正常工作,但不能在C++中正常工作。任何人都可以告诉如何将指针传递给二维数组中的一维数组?在C++中声明指向二维数组的内部二维数组的指针

#include<iostream> 
    #include<stdio.h> 
    int main(){ 
       int s[5][2]={ 
          {0,1}, 
          {2,3}, 
          {4,5}, 
          {6,7}, 
          {8,9} 
       }; 
     } 

    int (*p)[2]; 
    int i,j,*pointer; 

     for(i=0;i<=4;i++){ 
      p=&s[i]; 

此行生成错误,如果我删除(INT *),而在C.Its做工精细着称未转换INT()[2](INT)。

   pointer=(int*)p; 
      printf("\n"); 

     for(j=0;j<=1;j++) 
     { 
      printf("%d\t",*(pointer+j)); 
     } 
    return 0; 
    } 
+0

请正确缩进代码,确保大括号正确放置。 – P0W 2014-09-24 03:57:33

+0

我很抱歉,我一次又一次地收到错误,“请添加一些上下文”。我试图缩进,但我是新来的,所以我没有得到如何添加上下文。 – 2014-09-24 03:59:20

+0

@Justin James你能指出什么语句会产生错误,错误的信息是什么? – 2014-09-24 04:02:43

回答

0

如果要加错过了结束花那么代码表被成功编译(在www.ideone.com)

#include <cstdio> 

int main() 
{ 
    int s[5][2] = 
    { 
     { 0, 1 }, 
     { 2, 3 }, 
     { 4, 5 }, 
     { 6, 7 }, 
     { 8, 9 } 
    }; 

    int (*p)[2]; 
    int i, j, *pointer; 

    for(i = 0; i <= 4; i++) 
    { 
     p = &s[i]; 
     pointer = (int*)p; 
     printf("\n"); 

     for (j = 0; j <= 1; j++) 
     { 
      printf("%d\t", *(pointer + j)); 
     } 
    } 

    return 0; 
} 

输出是

0 1 
2 3 
4 5 
6 7 
8 9 

要考虑到它会写得更好

pointer = *p; 

而不是

pointer = (int*)p; 
+0

我完全想问这个。 pointer = * p 不工作 – 2014-09-24 04:15:31

+0

C:\ TC \ INCLUDE \ xc.cpp ||在函数'int main()'中: C:\ TC \ INCLUDE \ xc.cpp | 16 |错误:无法在赋值语句中将'int(*)[2]'转换为'int *' || ===构建失败:1个错误,0个警告(0分(s),0秒(s))=== | – 2014-09-24 04:18:02

+0

@Justin James我向你展示了代码被编译。只有改变我建议。 – 2014-09-24 04:20:27