2012-03-18 88 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) 
{ 
    // ... 
}