2012-03-18 89 views
0

如果我想通過ref傳遞數組該怎麼辦?一個數組是一個指向其第一個元素的指針,我想通過ref傳遞'整個數組'。如果我定義C++ - 通過數組傳遞參考

void someFunction(double& adouble){...} 

然後adouble是ref的雙精度型,而不是雙精度型數組。

如果我定義

void anotherFunction(double* adouble){...} 

那麼我的觀點是指向一個雙或數組,但它不是由裁判通過了,對不對?

感謝和問候

+3

數組不是指向其第一個元素的指針。數組是一個數組。指針是一個指針。如果你想傳遞數組,你幾乎肯定要使用'std :: vector'而不是 – jalf 2012-03-18 11:12:46

+4

一個評論是不夠的:**一個陣列不是一個指針**。在它引起你更多的麻煩之前,把你的頭腦中的錯誤概念解決掉。 – Mankarse 2012-03-18 11:27:26

回答

4

對於具體尺寸:

void foo(double (&array)[100]); 

對於任何大小:

template <size_t N> 
void foo(double (&array)[N]); 
2

爲什麼不:

void foo(double *& bar) 
+1

這通過引用傳遞一個指針,如果你想要一個數組,這幾乎是無用的。 – 2012-03-18 11:52:41

0

另一種可能性是使用結構作爲p的包裝驢陣列,這可以使它在某些情況下更方便。示例:

const int N = 100; 

struct ArrayWrapper 
{ 
    double adouble[N]; 
}; 

void foo(ArrayWrapper& wrapper) 
{ 
    // ... 
}