Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    11

    [C]

    int arr[3]={1,2,3};
    int *ptrArr;
    Cosa succede dopo:
    ptrArr=arr;
    e
    arr=ptrArr;

    Secondo me le 2 variabili contengono lo stesso indirizzo che è l'indirizzo base dell'array xò nn sono sicuro...

  2. #2
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Nel caso di

    int arr[3]={1,2,3};
    int *ptrArr;
    ptrArr=arr;

    prtArr contiene effettivamente l'indirizzo di partenza di arr (in C, vettori e puntatori sono la stessa cosa: i vettori sono solo una comodità per il programmatore, ma sono trattati come puntatori)

    Invece, nel caso di

    int arr[3]={1,2,3};
    int *ptrArr;
    arr=ptrArr;

    arr non punta più ai dati del vettore (il cui indirizzo va perso), ma a ciò a cui punta ptrArr, sempre che punti a qualcosa. Se non punta a niente (e alcuni compilatori non se ne accorgono!), rischi di beccarti un errore di accesso a memoria non valido.

    Per completezza, nel caso di

    int arr[3]={1,2,3};
    int *ptrArr;
    ptrArr=arr;
    arr=ptrArr;

    in pratica non succede niente: ptrArr e arr punteranno entrambi al vettore.

  3. #3
    In effetti le cose stanno un po diversamente . In C il nome di un array, nel caso specifico arr[] , è una costante , non una variabile ! Mentre ptrArr è una variabile . Quindi operazioni come ptrArr=arr o ptrArr++ sono legali , ma non lo sono operazioni come arr=ptrArr .

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.