我試圖傳遞兩個二維數組(同一大小; 8乘四)到一個函數,並設置一個等於另一個(與一些不同的順序元素,但不真的物)。到目前爲止,我有:將二維數組傳遞給一個函數
int main() {
double** Array1;
double** Array1;
// MALLOC BOTH OF THEM
....
// PUT STUFF IN ARRAY1
....
CopyFunction(&Array1, &Array2);
}
void CopyFunction(double*** Array1, double*** Array2) {
for (int i = 0; i < 8; i++) {
*Array2[i][0] = *Array1[i][0];
*Array2[i][1] = *Array1[i][1];
*Array2[i][2] = *Array1[i][2];
*Array2[i][3] = *Array1[i][3];
}
}
但我正在逐漸段錯誤象這樣的錯誤:
*** Break *** segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
沒有理由在C++中使用'malloc'。改用'new'。也就是說,在C++中使用'new'幾乎沒有什麼理由。改用RAII。如果這些是矢量,你的代碼就像'Array2 = Array1;'一樣簡單。相關:http://klmr.me/slides/modern-cpp/#1 – chris
我完全同意@chris,但我正在使用其他人制作的包需要2d陣列向量的包,所以我必須堅持這一點!謝謝 – JMzance
Irrelavant:既然你沒有修改copyFunction中的指針,爲什麼不通過'double **'而不是'double ***'指針呢? – texasbruce