[英]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.