Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Аргументы — это имена значений, передаваемых функции вызовом функции. Параметры — это значения, которые функция ожидает получения. В прототипе функции скобки после имени функции содержат полный список параметров функции и их типов. Объявления параметров указывают типы, размеры и идентификаторы значений, хранящихся в параметрах.
Синтаксис
function-definition:
declaration-specifiers
выбиратьattribute-seqвыбиратьdeclaratordeclaration-listвыбиратьcompound-statement
/*
attribute-seq — это microsoft-specific */
declarator:
pointer
выбиратьdirect-declarator
direct-declarator: /* Декларатор функции */
direct-declarator
(
parameter-type-list
) /* Декларатор нового стиля */
direct-declarator
(
identifier-list
выбирать) /* Устаревший декларатор */
parameter-type-list: /* Список параметров */
parameter-list
parameter-list
, ...
parameter-list:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
выбирать
Это parameter-type-list последовательность объявлений параметров, разделенных запятыми. Форма каждого параметра в списке параметров выглядит следующим образом:
registerвыбиратьtype-specifierdeclaratorвыбирать
Параметры функции, объявленные атрибутом auto , создают ошибки. Идентификаторы параметров используются в тексте функции для ссылки на значения, передаваемые функции. Параметры можно назвать в прототипе, но имена выходят из области в конце объявления. Это означает, что имена параметров можно назначать одинаково или по-другому в определении функции. Эти идентификаторы не могут быть переопределены во внешнем блоке тела функции, но их можно переопределять в внутренних вложенных блоках, как будто список параметров был вложенным блоком.
Перед каждым идентификатором parameter-type-list должен предшествовать соответствующий описатель типов, как показано в этом примере:
void new( double x, double y, double z )
{
/* Function body here */
}
Если в списке параметров возникает по крайней мере один параметр, список может заканчиваться запятой, за которой следует три периода (, ...). Это построение, называемое многоточием нотации, указывает переменное число аргументов функции. Дополнительные сведения см. в разделе "Вызовы с переменным числом аргументов". Однако вызов функции должен иметь по крайней мере столько аргументов, сколько есть параметры до последней запятой.
Если аргументы не передаются функции, список параметров заменяется ключевым словом void. Это использование void отличается от его использования в качестве описателя типов.
Порядок и тип параметров, включая любое использование нотации с многоточием, должен быть одинаковым во всех объявлениях функций (если таковые) и в определении функции. Типы аргументов после обычных арифметических преобразований должны быть совместимы с типами соответствующих параметров. (См. обычные арифметические преобразования для получения сведений об арифметических преобразованиях.) Аргументы после многоточия не проверяются. Параметр может иметь любой фундаментальный, структурный, объединение, указатель или тип массива.
При необходимости компилятор выполняет обычные арифметические преобразования независимо от каждого параметра и каждого аргумента. После преобразования параметр не короче, чем параметр int, и нет float типа, если тип параметра явно не указан, как float в прототипе. Это означает, например, что объявление параметра как параметра char имеет тот же эффект, что и объявление его как .int