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

    [C] Una piccola informazione

    Salve, io avrei un piccolo dubbio riguardo le funzioni, so che le funzioni possono avere dei ritorni o non averne, quando utilizzo una funzione void e carico un vettore (nel void), tornando nel main il vettore mantiene i valori assegnati precedentemente nel void, invece se assegno un valore a una variabile normale nel void, tornati nel main quest'ultima ha un valore diverso.
    Sapete dirmi perchè il vettore mantiene i suoi valori? grazie

    codice:
    void test(int vet[],int var);
    int main(int argc, char *argv[])
    {
      int var,vet[3];
      test(vet,var);
      printf("%d\n",vet[0]);
      printf("%d\n",vet[1]);
      printf("%d\n",vet[2]);
      printf("\n%d\n",var);
      getch();
    }
    void test(int vet[],int var)
    {
      vet[0]=1;
      vet[1]=2;
      vet[2]=3;
      var=10;   
    }

  2. #2
    In C (e C++) tutti i parametri "normali" sono passati per copia, mentre i vettori sono passati per riferimento - o meglio, quando tu scrivi:
    codice:
    void test(int vet[],int var);
    il compilatore in realtà capisce
    codice:
    void test(int *vet,int var);
    Ovvero, passando un vettore passi (per copia) un puntatore al suo primo elemento, e di conseguenza le modifiche fatte al contenuto del vettore risultano visibili da fuori (perché non stai lavorando su una copia, ma sul vettore stesso).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ho capito, grazie mille

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

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.