提问者:小点点

这个语法在方法声明中的意义是什么


我遇到过这种方法,我也不确定该如何解读:

const char(*get_foo(int par))[38]
{
    return foo;
}

函数中未使用par参数...

foo定义为:

static const char bar[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static const char(*foo)[38] = &bar;

get_foofoobar都是同一个类的成员。

另外,当调用get_foo时,它的返回值存储在常量ushort*值中:

const ushort* baz = *instant->get_foo(some_value);

我以前没有看到那个语法,也不能理解这个方法声明,组成这个声明的不同部分是什么,说明怎么读?


共1个答案

匿名用户

这是一个接受int并返回包含38个const char类型的指向数组的指针的函数。 不清楚为什么不使用par参数,这将是原作者的问题。

应该读这样的函数:

const char(*get_foo(int par))[38]
            ^~~~~~~~~~~~~~~~ (1)
^~~~~~~~~~~~                ^~~~~ (2)
  1. 函数名为get_foo,函数参数int名为par
  2. 返回类型为const char(*)[38]--它是指向包含38条目
  3. char数组的指针

由于C++中的运算符优先级,它导致了看起来像这样模糊的类型,因为否则它会引入语法上的歧义。 如果代码的作者只使用一个别名,会更容易阅读:

using array_type = const char(*)[38];

array_type get_foo(int par);

它相当于常量char(*get_foo(int par))[38]