Как я могу вернуть указатель на char [] [] [] из функции? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть массив static -char, определенный как:

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

И я хочу вернуть указатель на эту переменную из функций, я пытаюсь от static_cast до void*, но это не удается , Как я могу вернуть указатель на char[][][]?

1 Ответ

5 голосов
/ 19 апреля 2020

Указатель на массив (точнее на первый элемент массива, если вы инициализируете его массивом) может быть объявлен как

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;
...