Condividi tramite


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-specifiersopt opt declarator declaration-list attribute-seq compound-statement

/* attribute-seq è specifico di Microsoft */

declarator:
pointeroptare direct-declarator

direct-declarator: /* Dichiaratore di funzione */
direct-declarator ( parameter-type-list ) /* Dichiaratore di nuovo stile */
direct-declarator ( identifier-listopt ) /* Dichiaratore di stile obsoleto */

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

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratoroptare

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

registeropt opt opt type-specifier declarator

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 in modo diverso nella definizione della funzione. Questi identificatori non possono essere ridefinito nel blocco più esterno del corpo della funzione, ma possono essere ridefinito in blocchi annidati interni come se l'elenco di parametri fosse un blocco di inclusione.

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 punti (, ...). 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 presenti 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. (Vedere Conversioni aritmetiche consuete per informazioni sulle 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 nessun parametro ha float tipo a meno che il tipo di parametro non venga specificato in modo esplicito come float nel prototipo. Ciò significa, ad esempio, che dichiarando un parametro come un oggetto ha char lo stesso effetto di dichiararlo come .int

Vedi anche

Definizioni di funzioni C