这听起来可能是一个非常基本的问题,但是我对这段代码的理解并不多:
所以我有一个带参数的函数: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);
}
我试图理解如何在这里定义基本上转换为字符串的非类型参数
答案 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的数组的特殊好处是您可以使用字符串文字形式的文字数组。