Я знаю, что:Обозначения: Указатель на массив и массив указателей
Foo *array[10]; // array of 10 Foo pointers
Foo (*array)[10]; // pointer to array of 10 Foos
Однако, я не совсем понимаю логику этой записи. То есть, почему первая часть создает массив указателей, почему вторая создает указатель на массив?
Конечно, я могу легко запомнить эту нотацию, но я хотел бы знать логику этого.
Поскольку вы отметили этот вопрос C++, согласились бы вы ответить **, потому что C сделал это так **? :-) –
Попробуйте запомнить эти обозначения: 'int * (* (* (* b)()) [10])();' :) [Чтение C-объявлений.] (Http://www.ericgiguere.com /articles/reading-c-declarations.html) – jrok
AFAIK, обоснование того, как декларации в работе C состоят в том, что они хотели, чтобы они напоминали использование заявленных. Например, для 'Foo (* array) [10];' dererencing it ('* array') дает вам' Foo [10] '. Вот [некоторое чтение] (http://cm.bell-labs.com/cm/cs/who/dmr/chist.html) по этому вопросу. – jrok