Udostępnij za pośrednictwem


Parametry

Argumenty to nazwy wartości przekazywanych do funkcji przez wywołanie funkcji. Parametry to wartości, których oczekuje funkcja. W prototypie funkcji nawiasy po nazwie funkcji zawierają pełną listę parametrów funkcji i ich typów. Deklaracje parametrów określają typy, rozmiary i identyfikatory wartości przechowywanych w parametrach.

Składnia

function-definition:
declaration-specifiersopt opt attribute-seq declarator declaration-list compound-statement

/* attribute-seq jest specyficzny dla firmy Microsoft */

declarator:
pointerZdecydować direct-declarator

direct-declarator: /* Deklarator funkcji */
direct-declarator ( parameter-type-list ) /* Deklarator w nowym stylu */
direct-declarator ( identifier-listopt ) /* Deklarator w stylu przestarzałym */

parameter-type-list: /* Lista parametrów */
parameter-list
parameter-list , ...

parameter-list:
parameter-declaration
parameter-list , parameter-declaration

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratorZdecydować

Jest parameter-type-list to sekwencja deklaracji parametrów rozdzielonych przecinkami. Formularz każdego parametru na liście parametrów wygląda następująco:

registeropt opt opt type-specifier declarator

Parametry funkcji zadeklarowane za pomocą atrybutu auto generują błędy. Identyfikatory parametrów są używane w treści funkcji w celu odwoływania się do wartości przekazanych do funkcji. Parametry można nazwać w prototypie, ale nazwy wykraczają poza zakres na końcu deklaracji. Oznacza to, że nazwy parametrów można przypisać w ten sam sposób lub inaczej w definicji funkcji. Tych identyfikatorów nie można ponownie zdefiniować w najbardziej zewnętrznym bloku treści funkcji, ale można je ponownie zdefiniować w blokach wewnętrznych, zagnieżdżonych tak, jakby lista parametrów była blokiem otaczającym.

Każdy identyfikator w parameter-type-list pliku musi być poprzedzony odpowiednim specyfikatorem typu, jak pokazano w tym przykładzie:

void new( double x, double y, double z )
{
    /* Function body here */
}

Jeśli co najmniej jeden parametr występuje na liście parametrów, lista może kończyć się przecinkiem, po którym następuje trzy kropki (, ...). Ta konstrukcja, nazywana notacją wielokropka, wskazuje zmienną liczbę argumentów funkcji. (Aby uzyskać więcej informacji, zobacz Wywołania ze zmienną liczbą argumentów). Jednak wywołanie funkcji musi mieć co najmniej tyle argumentów, ile parametrów znajduje się przed ostatnim przecinkiem.

Jeśli do funkcji nie mają być przekazywane żadne argumenty, lista parametrów jest zastępowana przez słowo kluczowe void. To użycie void programu różni się od jego użycia jako specyfikatora typu.

Kolejność i typ parametrów, w tym wszelkie zastosowania notacji wielokropka, muszą być takie same we wszystkich deklaracjach funkcji (jeśli istnieją) i w definicji funkcji. Typy argumentów po zwykłych konwersjach arytmetycznych muszą być zgodne z typami odpowiednich parametrów. (Zobacz Zwykłe konwersje arytmetyczne w celu uzyskania informacji na temat konwersji arytmetycznych). Argumenty po wielokropkach nie są sprawdzane. Parametr może mieć dowolny podstawowy, strukturę, unię, wskaźnik lub typ tablicy.

Kompilator wykonuje zwykłe konwersje arytmetyczne niezależnie na każdym parametrze i w każdym argumencie, jeśli to konieczne. Po konwersji żaden parametr nie jest krótszy niż intparametr , a żaden parametr nie ma float typu, chyba że typ parametru jest jawnie określony w float prototypie. Oznacza to na przykład, że deklarowanie parametru jako char elementu ma taki sam efekt, jak deklarowanie go jako int.

Zobacz też

Definicje funkcji języka C