如何从函数返回指向 char[][][] 的指针?

Gha*_*ani 0 c++ arrays pointers declaration function-declaration

我有一个static-char 数组定义为:

static const char city_names[1000][4][50];
Run Code Online (Sandbox Code Playgroud)

我想从函数返回一个指向这个变量的指针,我尝试 a static_casttovoid*但它失败了。我怎样才能返回一个指针char[][][]

Vla*_*cow 5

一个指向数组的指针(更准确地说是指向数组的第一个元素,如果你用数组初始化它)可以像这样声明

static const char city_names[1000][4][50];

const char ( *p )[4][50] = city_names;
Run Code Online (Sandbox Code Playgroud)

所以返回这样一个指针的函数声明看起来像

const char ( *f( /* some parameters */ ) )[4][50];
Run Code Online (Sandbox Code Playgroud)

在函数中你可以只写

return city_names;
Run Code Online (Sandbox Code Playgroud)

也就是说,如果你有一个数组声明如下

T a[N1][N2][N3];
Run Code Online (Sandbox Code Playgroud)

其中 T 是某种类型说明符,N1、N2、N3 是指定数组大小的常量,那么您可以重写如下声明

T ( a[N1] )[N2][N3];
Run Code Online (Sandbox Code Playgroud)

要获得指向数组元素类型的指针,只需将记录( a[N1] )替换为指针声明符,例如

T ( *p )[N2][N3] = a;
Run Code Online (Sandbox Code Playgroud)