2016-07-17 1 views
1

Этот вопрос задан в некотором роде, но мне трудно понять.Объявление функции, возвращающей массив 2 d в c

int (*q)[3][4] ->q - указатель на 2-мерный массив из 3 строк и 4 столбца.

Теперь предположим, что я хочу вернуть 2-мерный массив из функции.

pointer-to-2d-array func() { 

    static 2 day array; 

    return ; 
} 

В принципе, какая должна быть подпись моей функции. Я видел много мест, как показано ниже, которые я не undesrtand

int (*fun2())[column]; 

Am найти его трудно объяснить/понять подпись. Может кто-нибудь, пожалуйста, помогите мне в этом?

+0

Прежде чем задавать вопросы, используйте [поиск] (https://stackoverflow.com/search?q=). – 2501

+0

'void func (int (* p) [] [COL_SIZE])' должен это сделать. Обратите внимание, что размер строки не является обязательным, что может быть автоматически оценено. Массив передается функции как указатель, изменения вызываемого абонента также отразятся и на вызывающем абоненте. Так что 'void' как возвращаемый тип имеет смысл. – sjsam

ответ

1

Один простой подход заключается в использовании typedef:

typedef int (*ThreeByFourPtr)[3][4]; 

ThreeByFourPtr fun() { 
    static int res[3][4]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 
    return &res; 
} 

Преимущество заключается в том, что синтаксис отражает структуру объявлении указателя типа, с именем типа замены имени переменной.

Смежные вопросы