Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [C] parametri funzione

  1. #1

    [C] parametri funzione

    Salve a tutti,

    qualcuno potrebbe dare conferma a quello che sto dicendo, cosi da chiarirmi le idee.

    ho questo codice

    stampa(int *vet, int size){

    .......
    }


    con *vet sto passando alla funzione l'indirizzo di vet ?

    che differenza c'è se passo alla funzione solo vet invece di *vet

    Se ho detto qualche caxxata mi vogliate scusare, ho iniziato da poco a studiare la programmazione.

    Ciao e grazie in anticipo
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Se passi vet non stai passando il suo indirizzo ma il suo valore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Come hai scritto tu:
    codice:
    stampa(int *vet, int size){
    
    .......
    }
    Non è logico.
    Quando chiamiamo una funzione, ad esempio nella main, dichiariamo le variabili e nella chiamata inseriamo quelle variabili.
    Es:
    codice:
    /* Funzione */
    void esadecimale(char c){ /* la variabile char c, sarà sostituita da quella della chiamata */
         if(((c>=0)&&(c<=9))||((c>='a')&&(c<='f'))||((c>='A')&&(c<='F')))
         printf("numero esadecimale\n");
         else printf("non esadecimale\n");
    }
    Quando la chiami nella main:
    codice:
    int main(){
         char car1;
         printf("inserisci un carattere");
         scanf("%c",&car1);
         esadecimale(car1); /*la funzione è void quindi non ha bisogno di una variabile per chiamarla */
         system ("pause");
         return 0;
    }
    Il mio Portfolio Flickr

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da ryan atwood
    Come hai scritto tu:
    codice:
    stampa(int *vet, int size){
    
    .......
    }
    Non è logico.
    E perchè non è logico? Non capisco?

    /*la funzione è void quindi non ha bisogno di una variabile per chiamarla */
    Anche questa affermazione è strana.

    Attenzione ... si rischia (ancora di più) di confondere le idee di chi ha aperto il thread ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Perchè se ad esempio la funzione era int.
    nella funzione chiamante dovevamo riservare una variabile alla funzione chiamata.
    Es:
    codice:
    int n_divisori(int d){
             int i,cont;
             for(i=0;i<d/2;i++)
                 if(d%i==0) cont++;
             return cont;
    }
    nella main:
    codice:
    int main(){
         int x,y;
         printf("inserisci un numero: ");
         scanf("&d",&x);
         y=n_divisori(x);
            ...
    ....
    ....
    Il mio Portfolio Flickr

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da ryan atwood
    Perchè se ad esempio la funzione era int.
    nella funzione chiamante dovevamo riservare una variabile alla funzione chiamata.
    Non necessariamente: il programmatore può anche fregarsene del valore di ritorno della funzione.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da ryan atwood
    Perchè se ad esempio la funzione era int.
    nella funzione chiamante dovevamo riservare una variabile alla funzione chiamata.
    Non è vero ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Sto leggendo ora questo post, si sta andando da un problema ad un altro. Oregon aveva risposto ad un quesito (e secondo me nella maniera corretta). Poi che lui debba specificare per chiarezza anche il tipo di ritorno (e mi riferisco a chi ha aperto il topic) è un altro discorso, che va oltre il problema del topic stesso. Altrimenti uno dovrebbe pure dire che se non si specifica il tipo di ritorno allora viene sottinteso un tipo int
    codice:
    #include <stdio.h>    funzione_a_buffo(void)  {  	return 34;  }    int main(void)  {  	printf("Ciao nr %d\n",funzione_a_buffo());  }

    ...cmq mi auguro solo che seatleon abbia chiarito il proprio dubbio!!!
    Non ho firme, ma la ferma speranza che compaia una firma automatica ogni qualvolta ci sia bisogno di una firma, fermo restando che la speranza di una firma è l' ultima a morire

  9. #9
    Ciao a tutti
    e mi scuso se ho creato qualche dubbio per la dichiarazione della funzione stampa

    void stampa(int *vet, int size){
    ...
    }

    la funzione non fa altro che stampare a video il vettore.

    Il mio dilemma, ma che è stato chiarito bene dal primo post, era quello di passare alla funzione l'indirizzo del vettore.

    A ttal proposito ne approfitto per avere ulteriore conferma, passando i parametri in questo modo ( *vet) sono sicuro di andare a modificare il vettore originale e non una copia dello stesso ?

    Grazie a tutti.
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da seatleon
    A ttal proposito ne approfitto per avere ulteriore conferma, passando i parametri in questo modo ( *vet) sono sicuro di andare a modificare il vettore originale e non una copia dello stesso ?
    Sì.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.