КИТА unofficial

Ваши интересы => Викторины и конкурсы => Тема начата: vimmax от Октябрь 16, 2007, 10:22:52



Название: Искусство программирования (задача 9 и 1/2)
Отправлено: vimmax от Октябрь 16, 2007, 10:22:52

Опишите тип:


Код: (cpp)
char *(*(**foo[][8])())[];

Желательно в данном случае не гуглить  >:D .


Название: Re: Искусство программирования (задача 9)
Отправлено: EvilMax от Октябрь 16, 2007, 10:07:31
Мнээ.. Жуть какая-то. Попалось бы такое в свое время на экзамене, ни за что не сдал бы.

Но... Такх. Попробуем по порядку.

(**foo[][8]) двумерный массив двойных указателей. Начало многообещающее. Причем обещающее мало хорошего...

(**foo[][8])() двумерный массив двойных указателей на функции, которые не принимают ни одного аргумента  Уже веселее.

(*(**foo[][8])()) ...и возвращают указатель...

char * (*(**foo[][8])()) []; ...на одномерный массив указателей на char*

Итого:
двумерный массив двойных указателей на функции, которые не принимают ни одного аргумента  и возвращают указатель на одномерный массив элементов типа char*.

Где ошибся?


Название: Re: Искусство программирования (задача 9)
Отправлено: vimmax от Октябрь 17, 2007, 10:26:08
EvilMax  молодца ! +1

"foo is array of array of 8 pointer to pointer to function returning pointer to array of pointer to char"

источник (http://www.unixwiz.net/techtips/reading-cdecl.html)