PDA

View Full Version : [c] funzioni: ipotetica restituzione di piu' variabili


gfburgio88
09-07-2009, 15:15
Ciao a tutti,
ho provato a compilare una funzione in c del seguente tipo:

int fun(){
int k=3; int i=34; int j=45;
......
......
return k, i, j;
}

e non e' stato sollevato alcun errore dal compilatore, ne e' stato segnalato alcun warning(il compilatore usato e' il gcc su debian).
Mi chiedo a questo punto se e' possibile che la funzione possa restituire piu' valori contemporaneamente. Se cio' e' possibile sarei grato se qualcuno mi dicesse come ricavare gli altri valori(il valore restituito dalla funzione invocando normalmente la stessa e' j).
Grazie anticipatamente a tutti.

DevilMalak
09-07-2009, 19:32
E una stringa in output contenente tutti i valori separati da un carattere deciso da te? :)
O un array se si puo` [non conosco il C]

vizzz
09-07-2009, 19:42
no la funzione può tornare solamente un valore...ma puoi passare per reference i valori che intendi restituire:


void fun(int &k, int &i, int &j)
{
k = i = j = 10;
}

void main(void)
{
int k, i, j;

k = i = j = 0;

fun(k, i, j);

}

Stev-O
09-07-2009, 19:57
a meno che non dichiari la funzione int* e restituisci il puntatore all'array di interi

gfburgio88
10-07-2009, 18:03
grazie mille, problema risolto

DanieleC88
10-07-2009, 19:56
[...]
e non e' stato sollevato alcun errore dal compilatore, ne e' stato segnalato alcun warning(il compilatore usato e' il gcc su debian).
Se usi le virgole è normale, quella forma consente di usare più espressioni in una linea e restituirne solo l'ultima.

Potresti ad esempio fare:
int Funzione(int *a, int *b, int *c)
{
return ++(*a), --(*b), ((*c) - 3);
}

Questo ti incrementa a, decrementa b e restituisce (c - 3).

ciao ;)