在C ++中通过引用传递数组

时间:2013-09-11 10:03:35

标签: c++ arrays pointers reference

这听起来可能是一个非常基本的问题,但是我对这段代码的理解并不多:

所以我有一个带参数的函数:const char * str1
现在传递的参数定义为:const char (&str1)[5]

如果您能详细说明如何在第二行定义字符指针数组,我将不胜感激?

编辑:

template<unsigned N, unsigned M>
int compare(const char (&p1)[N], const char (&p2)[M]){
   return strcmp(p1,p2);
}

我试图理解如何在这里定义基本上转换为字符串的非类型参数

1 个答案:

答案 0 :(得分:1)

没有什么是“基本上翻译”。期望使用两个数组参数调用函数模板。

char s[] = { 'a', 0, 'c' };

compare(s, "xyz");    //  first argument "s" is a named array, N = 3
                      //  second argument is a string literal, M = 4

您可以对任何数组使用相同的模式,但类似char的数组的特殊好处是您可以使用字符串文字形式的文字数组。