我遇到过这种方法,我也不确定该如何解读:
const char(*get_foo(int par))[38]
{
return foo;
}
函数中未使用par
参数...
foo
定义为:
static const char bar[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static const char(*foo)[38] = &bar;
get_foo
,foo
和bar
都是同一个类的成员。
另外,当调用get_foo
时,它的返回值存储在常量ushort*
值中:
const ushort* baz = *instant->get_foo(some_value);
我以前没有看到那个语法,也不能理解这个方法声明,组成这个声明的不同部分是什么,说明怎么读?
这是一个接受int
并返回包含38个const char
类型的指向数组的指针的函数。 不清楚为什么不使用par
参数,这将是原作者的问题。
应该读这样的函数:
const char(*get_foo(int par))[38]
^~~~~~~~~~~~~~~~ (1)
^~~~~~~~~~~~ ^~~~~ (2)
get_foo
,函数参数int
名为par
const char(*)[38]
--它是指向包含38
条目char
数组的指针
由于C++中的运算符优先级,它导致了看起来像这样模糊的类型,因为否则它会引入语法上的歧义。 如果代码的作者只使用一个别名,会更容易阅读:
using array_type = const char(*)[38];
array_type get_foo(int par);
它相当于常量char(*get_foo(int par))[38]