首页 > 解决方案 > 如何从函数返回指向 char[][][] 的指针?

问题描述

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

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

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

标签: c++arrayspointersdeclarationfunction-declaration

解决方案


指向数组的指针(更准确地说是数组的第一个元素,如果您将使用数组对其进行初始化)可以声明为

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

const char ( *p )[4][50] = city_names;

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

const char ( *f( /* some parameters */ ) )[4][50];

在函数内你可以写

return city_names;

也就是说,如果你有一个声明为

T a[N1][N2][N3];

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

T ( a[N1] )[N2][N3];

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

T ( *p )[N2][N3] = a;

推荐阅读