相关疑难解决方法(0)

通过引用传递数组

如何通过引用传递静态分配的数组?

void foo(int (&myArray)[100])
{
}

int main()
{
    int a[100];
    foo(a);
}
Run Code Online (Sandbox Code Playgroud)

是否(&myArray)[100]有任何意义或只是通过引用传递任何数组的语法?我不明白单独的括号后跟大括号.谢谢.

c++ arrays

166
推荐指数
5
解决办法
33万
查看次数

按值传递typedef(固定大小)数组

我很难理解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*似乎不匹配.

c++ arrays typedef

4
推荐指数
2
解决办法
6678
查看次数

const数组的固定大小const数组作为C++中方法的参数

关于将数组作为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或这样的动态分配数组.

c++ const argument-passing multidimensional-array

0
推荐指数
1
解决办法
189
查看次数