Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [C/C++]: Passare un vettore ad una funzione

    Ciao a tutti,
    il mio testo di C dice che per passare un vettore alla funzione si deve procedere in questo modo:
    codice:
    ...
    void funzVettore (int b[], 10);
    
    int main()
    {
       ...
       funzVettore (a, 10);
    }
    void funzVettore (int b[], 10)
    {...}
    Però in alcuni esempi successivi trovo chiamata, prototipo e definizione di funzione privi dell'indice del vettore tra i parametri (Es. void funzVettore (int b[])).
    E' corretto in entrambi i modi?

  2. #2
    Ciao, và passato il puntatore all'array non l'array stesso....

    codice:
    #include <stdio.h>
    void funzVettore (int* b);
    
    int main(int argc, char* argv[])
    {
    	int a [10];
    
    	a[0]=0;
    	a[1]=1;
    	
    	int *b = a;
    	funzVettore (b);
    	return 0;
    }
    
    void funzVettore (int *c)
    {
    	printf ("%i",c[1]);
    	return;
    
    }
    Vuoi sbattezzarti? Guarda QUI

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma sei sicuro che il tuo libro riporti questa linea

    void funzVettore (int b[], 10);

    per la dichiarazione della funzione?

  4. #4
    Originariamente inviato da Last_Winter
    Ciao, và passato il puntatore all'array non l'array stesso....
    Non ho ancora studiato i puntatori per cui mi risulta difficile capire il tuo codice

    Originariamente inviato da oregon
    Ma sei sicuro che il tuo libro riporti questa linea

    void funzVettore (int b[], 10);

    per la dichiarazione della funzione?
    Hai ragione, l'ho trascritto male, mi sono perso un int tra parentesi
    codice:
    ...
    void funzVettore (int b[], int 10);
    
    int main()
    {
       ...
       funzVettore (a, 10);
    }
    void funzVettore (int b[], int 10)
    {...}
    In altri casi l'indice non è riportato come ho detto prima.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Continuo ad essere perplesso ...

    Sei sicuro che il testo riporti una costante numerica (10) nella dichiarazione della funzione

    void funzVettore (int b[], int 10);


    ???

    Quali sono il titolo e l'autore del libro?

  6. #6
    Il Deitel. Questo è l'esempio in questione (un po' abbreviato):
    codice:
    #include <stdio.h>
    #define SIZE 5
    
    void modifyArray( int b[], int size ); 
    
    int main()
    {
       int a[ SIZE ] = { 0, 1, 2, 3, 4 };
       int i;
    
       printf( "Effects of passing entire array by reference:\n\nThe "
              "values of the original array are:\n" );
    
       for ( i = 0; i < SIZE; i++ ) { 
          printf( "%3d", a[ i ] );
       }
    
       printf( "\n" );
    
       modifyArray( a, SIZE );  
    
       printf( "The values of the modified array are:\n" );
    
       for ( i = 0; i < SIZE; i++ ) {
          printf( "%3d", a[ i ] );
       }
    } 
    void modifyArray( int b[], int size )
    {
       int j;
    
       for ( j = 0; j < size; j++ ) {
          b[ j ] *= 2;
       }
    }
    Non riporta l'indice ma SIZE. Non è lo stesso ?? (il libro non è per niente chiaro in questo punto). Perchè poi in altri esempi chiamata (...), prototipo (int...[]) e definizione (int...[]) hanno solo il nome del vettore tra parentesi?
    Spero di essere stato più chiaro, scusa se ho fatto un po' di confusione

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Last_Winter
    Ciao, và passato il puntatore all'array non l'array stesso....

    codice:
    	int *b = a;
    	funzVettore (b);
    E passare semplicemente 'a', no???

    funzVettore (a);

    'a' da solo, infatti è già l'indirizzo dell'array!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da f@nt@m@n
    Non riporta l'indice ma SIZE. Non è lo stesso ??
    Nell'esempio, SIZE è una costante e size è il parametro della funzione. Sono 2 cose diverse. C, C++ sono linguaggi case-sensitive.

    Poi comunque mettere un parametro int b[] è equivalente a int *b.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da f@nt@m@n

    Non riporta l'indice ma SIZE. Non è lo stesso ??
    No ... non e' lo stesso ... rifletti sul significato di

    - costante

    - parametro di una funzione

    e sulle differenze

  10. #10
    Quello che volevo dire è scrivere modifyArray (a, SIZE) e scrivere modifyArray (a, 5) in questo caso è lo stesso, no?? E se è così, è possibile anche ometterlo scrivendo modifyArray (a)??

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.