Originariamente inviato da Noise85
salve a tutti,
Ho cercato nel forum ma non ho trovato una soluzione quindi posto un nuovo topic.

La mia domanda è semplice.

In c è possibile assegnare ad una variabile i risultati di una funzione, che ritorna più di un valore?
Per esempio:
codice:
int calcola(int, int);

int main(int argc, char *argv[]) {
// Posso fare qualcosa del genere? Qual'è (se esiste) il metodo giusto?
 int variabile = calcola(1,3);
 return 0;
}

int calcola(int x,int y) {
  return x,y;
}
No!

Ma un modo per ottenere lo stesso risultato (ed è il modo con cui comunemente si fa) è passare le variabili che vuoi assegnare "per riferimento" cioè come puntatori.In altre parole la tua funzione diverrebbe:
codice:
int calcola(int, int,int[]);

int main(int argc, char *argv[]) {
// Posso fare qualcosa del genere? Qual'è (se esiste) il metodo giusto?

int variabile[2];
 calcola(1,3,variabile);
 return 0;
}

void calcola(int x,int y,int result[2]) {
  result[0] = x;
  result[1] = y;
}
Oppure invece di due puntatori ad intero passi direttamente un array a due elementi e lavori sulle sue "caselline":
codice:
int calcola(int, int);

int main(int argc, char *argv[]) {
// Posso fare qualcosa del genere? Qual'è (se esiste) il metodo giusto?
 int variabile = calcola(1,3);
 return 0;
}

int calcola(int x,int y) {
  return x,y;
}
No!