因此,在我的程序中,我有一個函數傳遞給它一個二維數組,我想設置另一個二維數組等於該二維數組。我在C++中編寫了這個代碼,並且無法完全正確地使用語法。現在我有以下幾點:指定一個二維數組到另一個
void MyFunction(float **two_d_array){
float newArray[4][4];
//Set new array equal to two_d_array
}
two_d_array也將始終是4x4因此尺寸本身不是問題。
因此,在我的程序中,我有一個函數傳遞給它一個二維數組,我想設置另一個二維數組等於該二維數組。我在C++中編寫了這個代碼,並且無法完全正確地使用語法。現在我有以下幾點:指定一個二維數組到另一個
void MyFunction(float **two_d_array){
float newArray[4][4];
//Set new array equal to two_d_array
}
two_d_array也將始終是4x4因此尺寸本身不是問題。
我希望你沒有傳遞一個二維數組作爲你的函數的雙指針。
不管怎麼說,你可以只寫
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
newArray[i][j] = two_d_array[i][j];
如果您有其他二維數組(和不指針數組),然後只需使用memcpy()
:
void foo(float arr[][4])
{
float newArray[4][4];
memcpy(newArray, arr, sizeof(newArray));
}
謝謝你的幫助。但是將它作爲雙指針傳遞有什麼問題?訪問元素的語法將是相同的,不是嗎? – user1855952
@ user1855952語法會,只是語義不會。數組不是指針,指針不是數組,二維數組不會衰減爲雙指針,而是指向具有第二維大小的數組的指針。 – 2013-06-01 06:15:38
好的,我明白了。謝謝! – user1855952
是,你必須指定第二個dimenson,並通過一個整數參數傳遞第一個維度,它將如下所示: void foo(float arr [] [4],int dim);
當定義一個兩個維數組作爲
float a[4][4]
它的類型是浮[4] [4]。
,如果你想通過浮動**你可以創建你使用float **
float** f = (float**) malloc(sizeof(float *)*4);
for(int i=0;i<4;i++){
f[i] = (float*) malloc(sizeof(float)*4);
}
//initialize
MyFunction(f);
而且MyFunction的將是類似
void MyFunction(float **two_d_array){
float newArray[4][4];
for(int i=0;i<4;i++){
float* one_d = & two_d_array[i][0];
for(int j=0;j<4;j++){
newArray[i][j] = one_d[j];
}
}
}
問題是什麼功能?你有錯誤嗎?如果是,那麼錯誤信息是什麼?或者我們應該猜測? – user93353