Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182

    [C++] Array bidimensionali di puntatori char

    allora...mi servirebbe usare una matrice di char...
    Ogni cella dovrebbe contenere una frase. Ad esempio:

    codice:
            colonna1           colonna2                    colonna3
    riga1 tiramisu             uova,caffè                 unire uova, aggiungere caffè
    riga2 torta                  panna,cacao              aggiungere panna, e cacao
    riga3 cibo n                ingrediente n             istruzione n
    Io ho pensato ad usare un array di puntatori...o meglio una matrice di puntatori..
    così:

    codice:
    char *libro[3][3]= {{"tiramisu","uova,caffè","unire uova,aggiungere caffè"},
                               {"torta","panna,cacao","aggiungere panna, e cacao"},
                               {"cibo n","ingrediente n", "istruzione n"}};
    Può andar bene?
    Può essere controllata come una normale matrice? con for ecc..?

  2. #2
    Conti di lavorarci solo con string literal (nel qual caso sarà const char *[3][3]) oppure ci dovranno finire dentro anche valori inseriti a runtime?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    in che senso? dici se mi serve far inserire valori da input? no..sarà un array predefinito e non modificabile dall'utente. Se invece non fosse cosi?
    Comunque..mi è sorto un dubbio..
    va dichiarato con due ** ? dato che è una matrice.. o con una?
    Non va fatto nient'altro per allocarla? Cioè non va fatta l'allocazione dinamica con new?

  4. #4
    è una matrice di stringhe con dimensioni predefinite, quindi con un *

    se le dimensioni fossero state note a run time, e quindi avessi dovuto usare l'allocazione dinamica, sarebbe stato una matrice di puntatori a char*

    ovvero char*** matrix;

    mentre se fosse stata una matrice di singoli caratteri

    char** matrix;

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    se avessi voluto usare l'allocazione dinamica cosi' sarebbe stato giusto?:
    codice:
    char ***string= new char[][];
    vanno messe le dimensioni nelle parentesi quadre?!se si..e se non sono note?

  6. #6
    Non è così semplice... leggi da qui in poi.
    Comunque in quel caso avrebbe avuto più senso usare un std::vector<std::string>.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    ma a me per questioni didattiche è concesso usare solo gli array per il momento!
    comunque perchè non va bene??
    perchè magari va deallocata con delete[][] ??

  8. #8
    Non va bene perché new non consente quella sintassi, dato che gli array multidimensionali sono implementati in maniera particolare in C++. Come detto, leggiti il link in questione.
    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.