Parametri

Gli argomenti sono nomi dei valori passati a una funzione da una chiamata di funzione. I parametri sono i valori che la funzione prevede di ricevere. In un prototipo di funzione, le parentesi dopo il nome della funzione contengono un elenco completo dei parametri della funzione e dei relativi tipi. Le dichiarazioni di parametro specificano i tipi, le dimensioni e gli identificatori dei valori archiviati nei parametri.

Sintassi

function-definition:
declaration-specifiersOptareattribute-seqOptaredeclaratordeclaration-listOptarecompound-statement

/* attribute-seq è */ specifico di Microsoft

declarator:
pointerOptaredirect-declarator

direct-declarator: /* Un dichiaratore di funzioni */
direct-declarator(parameter-type-list) /* Dichiaratore in stile nuovo */
direct-declarator(identifier-listOptare) /* Dichiaratore in stile obsoleto */

parameter-type-list: /* Elenco dei parametri */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratorOptare

Si parameter-type-list tratta di una sequenza di dichiarazioni di parametri separate da virgole. Il formato di ogni parametro in un elenco di parametri è il seguente:

registerOptaretype-specifierdeclaratorOptare

I parametri della funzione dichiarati con l'attributo auto generano errori. Gli identificatori dei parametri vengono utilizzati nel corpo della funzione per fare riferimento ai valori passati alla funzione. È possibile assegnare un nome ai parametri in un prototipo, ma i nomi diventano esterni all'ambito alla fine della dichiarazione. Ciò significa che i nomi dei parametri possono essere assegnati allo stesso modo o diversamente nella definizione della funzione. Questi identificatori non possono essere ridefinito nel blocco più esterno del corpo della funzione, ma possono essere ridefiniti in blocchi interni, annidati come se l'elenco dei parametri fosse un blocco racchiuso.

Ogni identificatore in parameter-type-list deve essere preceduto dall'identificatore di tipo appropriato, come illustrato in questo esempio:

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

Se nell'elenco dei parametri si verifica almeno un parametro, l'elenco può terminare con una virgola seguita da tre periodi (, ...). Questa costruzione, denominata "notazione con i puntini di sospensione", indica un numero variabile di argomenti passati alla funzione. Per altre informazioni, vedere Chiamate con un numero variabile di argomenti. Tuttavia, una chiamata alla funzione deve avere almeno il numero di argomenti che esistono parametri prima dell'ultima virgola.

Se alla funzione non deve essere passato alcun parametro, l'elenco dei parametri viene sostituito dalla parola chiave void. Questo utilizzo di void è diverso dal relativo utilizzo come identificatore di tipo.

L'ordine e il tipo di parametri, incluso qualsiasi utilizzo della notazione con i puntini di sospensione, devono essere identici in tutte le dichiarazioni di funzione, se presenti, e nella definizione di funzione. I tipi degli argomenti dopo le conversioni aritmetiche consuete devono essere compatibili con l'assegnazione dei tipi dei parametri corrispondenti. Per informazioni sulle conversioni aritmetiche consuete, vedere Conversioni aritmetiche . Gli argomenti che seguono i puntini di sospensione non vengono controllati. Un parametro può avere qualsiasi tipo fondamentale, di struttura, unione, puntatore o matrice.

Il compilatore, se necessario, esegue le conversioni aritmetiche consuete in modo indipendente su ogni parametro e ogni argomento. Dopo la conversione, nessun parametro è più breve di un intparametro e non ha float tipo a meno che il tipo di parametro non sia specificato in modo esplicito come float nel prototipo. Significa, ad esempio, che dichiarando un parametro come un char oggetto ha lo stesso effetto di dichiararlo come .int

Vedi anche

Definizioni di funzione C