簡體   English   中英

二維數組的指針可用於C ++

[英]Pointer of Two dimensional array to function c++

我是C ++的初學者,僅是PHP和JAVA編程人員,我有一個問題要創建一個指向2d數組的指針,然后在[0]和[1]的不同函數和cout值中使用此指針。

我的腳本有一部分。

    int size_dd = 5;
    int dd[size_dd][2];

    for (int i = 0; i < size_dd; i ++)
    {
        dd[i][0] = 2 * i + 10;
        dd[i][1] = 4 * i + 20;
    }

我可以在主函數中讀取dd [i] [0],但不能在函數read(int * twodarray)中調用它們,因為它返回int [int]且數組中的第二個參數丟失。

問題是我需要指向該數組並在其他函數中調用它。

但是問題是當我在函數中處理* dd時,它返回dd是int [int]值而不是int [int] [int],我該如何解決呢?

您的函數應具有以下簽名:

void fooByPtr(int(*arr)[5][6]) {
  (*arr)[4][4] = 156;
}

// Call ex:
int dd[5][6];
fooByPtr(&dd);

您也可以使用參考和模板來做到這一點:

void fooByRef(int (&arr)[5][6]) {
  arr[4][4] = 156;
}

template<int N, int M>
void fooByRefTempl(int(&arr)[N][M]) {
  arr[4][4] = 156;
}

您的代碼的其他一些注釋(也是注釋中的注釋):

您可以使用常量值作為大小來創建數組,所以這是錯誤的:

    int size_dd = 5;

並且應該是:

    const int size_dd = 5;

在您的fun_call中,應在對數組進行索引之前取消引用它的數組(*dwu_wymiar)

最后, funCall(int(*dwu_wymiar)[][2], ,將funCall(int(*dwu_wymiar)[][2],更改為int(*dwu_wymiar)[5][2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM