Основы алгоритмического языка С++
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
?фицировать размер указателя. Объявления, использующие специальные ключевые слова, были описаны в разделе 4.3.3. Информация о смысле ключевых слов дана в системной документации.
Примеры:
char *message; /* Example 1 */
int *pointers[10]; /* Example 2 */ int (*pointer)[10]; /* Example 3 */ struct list *next, *previous; /* Example 4 */
struct list { /* Example 5 */ char *token;
int count;
struct list *next;
} line;
struct id { /* Example 6 */ unsigned int id_no;
struct name *pname;
} record;
В первом примере объявляется переменная- указатель поименованная message. Она указывает на величину типа char.
Во втором примере объявлен массив указателей, поименованный pointers. Массив состоит из 10 элементов. Каждый элемент- это указатель на переменную типа int.
В третьем примере объявлена переменная- указатель, поименованная pointer. Она указывает на массив из 10 элементов. Каждый элемент в этом массиве имеет тип int.
В четвертом примере объявлены две переменныхуказателя, которые ссылаются на величины структурного типа list (смотри следующий пример). Определение типа с именем list должно находиться в пределах видимости объявления.
В пятом примере объявляется переменная с именем line, структурного типа, поименованного list. Тип структуры с именем list определяется тремя элементами. Первый элементэто указатель на величину типа char, второй- на величину типа int, а третийэто указатель на следующую структуру типа list.
В шестом примере объявляется переменная с именем record, имеющая тип структуры с именем id. Заметим, что третий элемент с именем pname объявлен как указатель на другой тип структуры с именем name. Это объявление может появиться перед объявление структуры с именем name.
Объявление функций
Синтаксис:
[...];
Объявление функции определяет имя, тип возврата функции и, возможно, типы и число ее аргументов. Объявление функции также называется forward- объявлением. Декларатор функции объявляет имя функции, а спецификатор типа задает тип возврата. Если спецификатор типа опущен в объявлении функции, то предполагается, что функция возвращает величину типа int.
Объявление функции может включать спецификаторы класса памяти extern или static.
Список типов аргументов.
Список типов аргументов- определяет число и типы аргументов функции. Синтаксис списка аргументов следующий:
[,...]
Список имен типов- это список из одного или более имен типов. Каждое имя типа отделяется от другого запятой. Первое имя типа задает тип первого аргумента, второе имя типа задает тип второго аргумента и т. д. Если список имен типов заканчивается запятой с многоточием (,...), то это означает, что число аргументов функции переменно. Однако, предполагается, что функция будет иметь не меньше аргументов, чем имен типов, предшествующих многоточию.
Если список типов аргументов- содержит только многоточие (...), то число аргументов функции является переменным или равно нулю.
Замечание:
Чтобы поддержать совместимость с программами предыдущих версий, компилятор допускает символ запятой без многоточия в конце списка типов аргументов для обозначения их переменного числа. Запятая может быть использована и вместо многоточия для объявления нуля или более аргументов функции. Использование запятой поддерживается только для совместимости. Использование многоточия рекомендуется для нового представления.
Имя типа- для типов структуры, совмещения или базового типа состоит из спецификатора этого типа (такого как int ). Имена типов для указателей, массивов и функций формируются путем комбинации спецификатора типа с "абстрактным декларатором". Абстрактный декларатор- это декларатор без идентификатора. В разделе 4.9 "Имена типов" объясняется, каким объразом формировать и интерпретировать абстрактные деклараторы.
Для того чтобы объявить функцию, не имеющую аргументов, может быть использовано специальное ключевое слово void на месте списка типов аргументов. Компилятор вырабатывает предупреждающее сообщение, если в вызове такой функции будут специфицированы аргументы.
Еще одна специальная конструкция допускается в списке типов аргументов. Это фраза void *, которая специфицирует аргумент типа указатель. Эта фраза может быть использована в списке типов аргументов вместо имени типа.
Список типов аргументов может быть опущен. В зтом случае скобки после идентификатора функции все же требуются, хотя они и пусты. В этом случае в объявлении функции не определяются ни типы, ни число аргументов в функции. Когда эта информация опускается, то компилятор не проверяет соответствия между формальными и фактическими параметрами при вызове функции. Более подробная информация дана в разделе 7.4 "Вызовы функций".
Тип возврата
Функции могут возвращать величины любого типа за исключением массивов и функций. Для этого посредством спецификатора типа"type-specifier" в объявлении функции можно специфицировать любой тип: основной, структуру или совмещение. Идентификатор функции может быть модифицирован одной или несколькими звездочками (*), чтобы объявить возвращаемую величину типа указателя.
Хотя функции и не допускают возвратов массивов или функций, но они могут возвращать указатели на массивы или функции. Функции, которые возвращают указатели на величины типа массив или функция, объявляются посредством модификации идентификатора функции квадратными скобками, звездочкой и круглыми скобками, чтобы сформировать составной декларатор. Формирование и интерпретация состав