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

Passing array by reference in C++

本文关键字:数组 引用 C++      更新时间:2023-10-16

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

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

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

没有什么是"本质上翻译"。函数模板需要使用两个数组参数进行调用。

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

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