Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C++] Procedure ed &

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    2

    [c++] Procedure ed &

    Sono uno studente di un liceo scentifico.
    Faccio C++ a scuola.
    Ho un piccolo problema, la mia professoressa, informatica teorica, insiste sul fatto che, nella dichiarazione prima del main e poi nello sviluppo dopo la chiusura del main, nelle procedure bisogna inserire la & per inviare la variabile per indirizzo, altrimenti il programma non funziona.

    Una cosa del genere: void ord(int& a[]);
    Oltretutto ci dice che nello sviluppo della procedura(dopo la chiusura del main) alla fine delle istruzioni va scritto il return 0.

    Beh, ho notato che il compilatore non ne vuole sapere delle & e del return 0, che invece va inserito alla fine del programma.

    Il mio dubbio è questo, è la professoressa che non sà niente(e spero sia così ^^) oppure è il compilatore che ha un linguaggio tutto suo.

    Uso Dev-c++ 4.9.9.1

    Posto qui di seguito un esempio di programma elementare
    #include <stdlib.h>
    #include <iostream.h>

    void ord(int vett[4]);

    main()
    {
    int vett[4],i;
    for (i=0;i<4;i++)
    {
    cout<<"inserisci l'elemento in posizione "<<i<<"\n";
    cin>>vett[i];
    }
    ord(vett);
    for (i=0;i<4;i++)
    {
    cout<<vett[i]<<"\n";
    }
    system("pause");
    return 0;
    }

    void ord(int vett[4])
    {
    int j,p,n;
    for (n=0;n<3;n++)
    {
    for (j=n+1;j<4;j++)
    {
    if (vett[n]>vett[j])
    {
    p=vett[n];
    vett[n]=vett[j];
    vett[j]=p;
    }
    }
    }
    }

  2. #2
    Allora veniamo a noi:

    Problema 1 il return: il c++ ANSI prevede che il main ritorni un valore intero che segnali ad eventuali programmi in pipe o al sistema operativo con quale stato è terminato il programma:

    codice:
    int main()
    {
        return 0;
    }
    allo stesso modo le funzioni void dovrebbero terminare con un return;

    Per quanto riguarda il passaggio di variabili a una funzione (per valore o per riferimento)dipende dall'uso che se ne vuole fare, gli array vengono sempre passati per riferimento quindi aggiungere & è completamente superfluo e credo che non venga neppure digerito da alcuni compilatori

  3. #3
    al limite quando scrivi un prototipo devi inserire un puntatore
    codice:
    tipo * variabile
    con & invece ottieni l'indirizzo di una variabile, che non c'entra per niente...
    Acer Aspire 1692 - Centrino - PentiumM740(1,73GHz) - 1Gb DDR2 - ATI mobility radeon X700 256mb - 100Gb HD

  4. #4
    Originariamente inviato da suomi_viking_86
    al limite quando scrivi un prototipo devi inserire un puntatore
    codice:
    tipo * variabile
    con & invece ottieni l'indirizzo di una variabile, che non c'entra per niente...
    E' c++ non c, esistono i riferimenti...

    http://www.bo.cnr.it/corsi-di-inform...ferimenti.html
    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.)

  5. #5
    scusate, nn me ne ero accorto
    Acer Aspire 1692 - Centrino - PentiumM740(1,73GHz) - 1Gb DDR2 - ATI mobility radeon X700 256mb - 100Gb HD

  6. #6
    Originariamente inviato da suomi_viking_86
    scusate, nn me ne ero accorto
    Capita
    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.)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    2
    ho fatto qualche prova.
    La questione della & con le variabili vettoriali va bene, infatti se la variabile nn è un vettore funziona altrimenti....

    Il return senza valori alla fine del void va bene, nn dà errori e funziona correttamente.
    Invece ho un altro dubbio. Avete detto che C++ vuole alla fine del main il "return 0". Se lo metto tutto bene, ma se lo tolgo, la situazione nn cambia, il rpogramma funziona e il cmplilatore nn dice niente.

    Praticamente è come se il return 0 fosse inutile. Mah

  8. #8
    Dipende da quali flag di compilazione attivi, per esempio, tu usi il dev che utilizza come compilatore il mingw (il porting per windows del noto gcc di linux), se compili da linea di comando con g++ -o programma.exe -Wall programma.cpp ti darà sicuramente un warning

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.