Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    le funzioni ritornano un valore la tua funzione non lo fa!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    e anche se lo facesse, potrebbe ritornare solo un valore, non due

  3. #3
    No, a meno di non "impacchettare" i due valori in una struttura.
    codice:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    struct intPair
    {
        int firstInt;
        int secondInt;
    };
    
    intPair risultati (int* x, int* y);
    
    int main(void)
    {
        int a, b, c, d;
        intPair ip;
        cout<<"inserisci il primo numero";
        cin>>a;
        cout<<"inserisci il secondo numero";
        cin>>b;
        ip = risultati (&a, &b);
        cout<<ip.firstNumber<<endl;
        cout<<ip.secondNumber;
        getch();
    }
    
    intPair risultati (int* x, int* y)
    {
        intPair ip;
        ip.firstNumber=*x*2;
        ip.secondNumber=*y*2;  
        return ip;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Il modo più semplice è di usare le variabili in ingresso per i valori di uscita. (come fa la swap() )
    codice:
    void risultati (int* x, int* y){
         *x=*x*2;
         *y=*y*2;  
    }
    
    int a=1, b=2;
    risultati (&a, &b);
    // a = 2, b = 4
    Soluzione più elegante (e C++)
    codice:
    void risultati (int& x, int& y){
         x=x*2;
         y=y*2;  
    }
    
    int a=1, b=2;
    risultati (a, b);
    // a = 2, b = 4

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    * per il puntatore
    & per l'indirizzo della variabile che stai usando o per dare un riferimento (in una funzione)

    Ricapitolando i metodi sono 2:

    O metti il tutto in una struttura (suggerito da MItaly) o ti fai passare come puntatore i valori che vuoi ritornare.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Originariamente inviato da T. VERCETTI
    ok, grazie, avrei una domanda, cm e quando si usano "*" e "&"?
    Quando vuoi fare una funzione con parametri di output, cerca di non usare il passaggio per riferimento, perchè dando una rapida occhiata al codice del chiamante non ci si accorge (o ci ci si dimentica) del fatto che alcuni parametri possano essere modificati, mentre con il passaggio per indirizzo tutto risulta più chiaro. (vedi gli esempi di shodan).
    Insomma, usa il passaggio per riferimento solo se risulta estremamente chiaro che quelle variabili vengono modificate dalla funzione.
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

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 © 2025 vBulletin Solutions, Inc. All rights reserved.