2014-09-24 102 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