Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569

    c - vettore di puntatori

    Ciao a tutti.

    Come mai questa istruzione

    char **vet={"ciao","ciao"};

    è errata (initializer for scalar variable requires one element)

    mentre questa non da errori

    char *vet[]={"ciao","ciao"};

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La prima variabile e' un puntatore ad un puntatore a carattere.
    La seconda e' un array di lunghezza non specificata di puntatori a carattere.

    Si fa molta confusione ma gli array e i puntatori NON sono la stessa cosa.

    char **vet={"ciao","ciao"};

    da' errore perche' cerchi di utilizzare un inizializzatore di aggregati con un qualcosa che non e' un aggregato. Un puntatore ad un puntatore contiene un semplice indirizzo di un puntatore. Dentro le {} esistono tanti inizializzatori che non corrispondono a sinistra, ad altrettanti elementi in cui inserirli.

    char *vet[]={"ciao","ciao"};

    funziona perche' vet e' adesso un array (un aggregato) e quindi l'inizializzatore puo' predisporre ogni suo item, uno per volta. Quello che c'e' tra {} sono tanti validi inizializzatori per ognuno degli elementi dell'array.

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.