如何通过引用传递静态分配的数组?
void foo(int (&myArray)[100])
{
}
int main()
{
int a[100];
foo(a);
}
Run Code Online (Sandbox Code Playgroud)
是否(&myArray)[100]有任何意义或只是通过引用传递任何数组的语法?我不明白单独的括号后跟大括号.谢谢.
我很难理解typedef数组的模式.
typedef char Char10[10];
void fun (Char10 a) // not passing reference (interested in pass by value)
{
if(typeid(Char10) == typeid(char*))
throw 0; // <--- never happens
}
int main ()
{
char a[10]; fun(a); // ok
char b[11]; fun(b); // why works ?
}
Run Code Online (Sandbox Code Playgroud)
为什么接受不同大小的数组值fun()?是char[10]和char[11]不是不同的类型?
编辑:对于那些说它衰减指针的人,请参阅我编辑的代码.char[10]并且char*似乎不匹配.
关于将数组作为const参数传递的问题,我试图弄清楚如何编写一个方法,其中参数是一个固定大小const数组的const数组.唯一可写的东西就是这些数组的内容.
我在考虑这样的事情:
template <size_t N>
void myMethod(int* const (&inTab)[N])
{
inTab = 0; // this won't compile
inTab[0] = 0; // this won't compile
inTab[0][0] = 0; // this will compile
}
Run Code Online (Sandbox Code Playgroud)
此解决方案中唯一的问题是我们不知道第一个维度.有人有解决方案吗?
提前致谢,
凯文
[编辑]
我不想使用std :: vector或这样的动态分配数组.