Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] funzioni e valori di ritorno multipli

    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;
    }
    If today was perfect, there would be no need for tomorrow...
    Live as you want, the wildest way you can, till you're alive!!

  2. #2

    Re: [C] funzioni e valori di ritorno multipli

    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!
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Mi spiego meglio,

    Sto sviluppando una piccolissima applicazione che mi permette di calcolare su quale porta devo connettermi quando utilizzo una connessione FTP dati attiva (tramite comando PORT xxx,xxx,xxx,xxx,hbit,lbit).
    Ecco lo il codice, il problema è che (riportando l'esenpio di sopra) io x e y li devo calcolare!
    Ecco il codice, per quello che sono riuscito a fare per ora (noterete che sono un po )

    codice:
    #include <stdio.h>
    
    int cport(int,int[]);
    
    int main (int argc, char *argv[]) {
     printf("Port %d is 192,168,10,156,%d,%d",argv[0],bits[0],bits[1]);
     return 0;
    }
    
    void cport(int portnumber, int result[2]) {
     int h  = result[0] = portnumber/256;
     int l = result[1] = portnumber-h*256;
    }
    If today was perfect, there would be no need for tomorrow...
    Live as you want, the wildest way you can, till you're alive!!

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    I numeri da ritornare sarebbereo h e l? Definisciti una struct che li racchiude entrambi e poi ritorni la struttura.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Altra domandina molto semplice e da novizio.
    Premetto che vengo da linguaggi tipo PHP e altri interpretati.
    Com'è possibile (se lo è) convertire i tipi di dato in C?

    Per esempio, ora ho l'esigenza di convertire una stringa in intero che verrà in seguito calcolato

    Grazie
    If today was perfect, there would be no need for tomorrow...
    Live as you want, the wildest way you can, till you're alive!!

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Studiati la reference del C:

    http://www.cplusplus.com/ref/


    se s è un char*:

    int x = atoi(s);

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    Originariamente inviato da anx721
    Studiati la reference del C:

    http://www.cplusplus.com/ref/


    se s è un char*:

    int x = atoi(s);
    graaazie

    apposto
    If today was perfect, there would be no need for tomorrow...
    Live as you want, the wildest way you can, till you're alive!!

  8. #8
    Originariamente inviato da anx721
    I numeri da ritornare sarebbereo h e l? Definisciti una struct che li racchiude entrambi e poi ritorni la struttura.
    Si questo è l'altro modo,infatti io ho parlato di UNO dei modi.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.