Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Puntatori a NULL

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    17

    [C] Puntatori a NULL

    Salve avevo un piccolo dubbio con i puntatori.

    Volevo sapere se quando creo un puntatore esso venga già inizializzato a NULL;
    ESEMPIO:
    int *p;

    volevo sapere se p è già uguale a NULL;

    Poi un'altro problema.
    se faccio

    int *p;

    p=malloc(10*sizeof(int));

    free(p);

    adesso p punta a NULL?

    Grazie mille in anticipo.

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Dovrebbe essere NULL solo se è una viabile globale, il resto dipende dalle opzioni di compilazione. Almeno su buona parte dei compilatori
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A parte quanto detto da linoma, prendi la buona abitudine di non dare per scontato che il puntatore sia a NULL ma inizializzalo.

    int *p = NULL;

    Dopo la free, il puntatore NON è posto a NULL. Devi farlo tu.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Lo standard C dice che:
    - per variabili con static storage duration, ovvero le globali e le locali static, se non viene specificata un'inizializzazione esplicita vengono inizializzate a zero;
    - in tutti gli altri casi, nascono "non inizializzate", il che significa che è undefined behavior accedervi in lettura prima di averci scritto qualcosa.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.