0

这听起来可能是一个非常基本的问题,但是我对这段代码的理解有点混乱:

所以我有一个带参数的函数: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);
}

我试图了解如何在此处定义本质上转换为字符串的非类型参数

4

1 回答 1

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 的数组的特殊好处是您可以拥有字符串字面量形式的字面量数组。

于 2013-09-11T10:11:12.153 回答