如果我想通過ref傳遞數組該怎麼辦?一個數組是一個指向其第一個元素的指針,我想通過ref傳遞'整個數組'。如果我定義C++ - 通過數組傳遞參考
void someFunction(double& adouble){...}
然後adouble是ref的雙精度型,而不是雙精度型數組。
如果我定義
void anotherFunction(double* adouble){...}
那麼我的觀點是指向一個雙或數組,但它不是由裁判通過了,對不對?
感謝和問候
如果我想通過ref傳遞數組該怎麼辦?一個數組是一個指向其第一個元素的指針,我想通過ref傳遞'整個數組'。如果我定義C++ - 通過數組傳遞參考
void someFunction(double& adouble){...}
然後adouble是ref的雙精度型,而不是雙精度型數組。
如果我定義
void anotherFunction(double* adouble){...}
那麼我的觀點是指向一個雙或數組,但它不是由裁判通過了,對不對?
感謝和問候
對於具體尺寸:
void foo(double (&array)[100]);
對於任何大小:
template <size_t N>
void foo(double (&array)[N]);
爲什麼不:
void foo(double *& bar)
這通過引用傳遞一個指針,如果你想要一個數組,這幾乎是無用的。 – 2012-03-18 11:52:41
另一種可能性是使用結構作爲p的包裝驢陣列,這可以使它在某些情況下更方便。示例:
const int N = 100;
struct ArrayWrapper
{
double adouble[N];
};
void foo(ArrayWrapper& wrapper)
{
// ...
}
數組不是指向其第一個元素的指針。數組是一個數組。指針是一個指針。如果你想傳遞數組,你幾乎肯定要使用'std :: vector'而不是 – jalf 2012-03-18 11:12:46
一個評論是不夠的:**一個陣列不是一個指針**。在它引起你更多的麻煩之前,把你的頭腦中的錯誤概念解決掉。 – Mankarse 2012-03-18 11:27:26