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

    [c] puntatore ad array di puntatore, limite del C oppure?

    Non ho idea del perchè il compilatore dia un errore su un array di puntatori (dinamico).

    Praticamente dichiaro questa variabile (puntatore ad array di puntatori ad una struct):
    codice:
    struct struct_albero_nodo ***queue;
    inizio ad allocare il primo spazio di memoria per quest'array facendo:

    codice:
    queue = (struct struct_albero_nodo *)calloc(1,sizeof(struct struct_albero_nodo *));
    cosi ora posso inserire il primo elemento

    queue[0] = (puntatore ad una struct definita in precedenza).
    Bene a questo punto sorge il problema.

    se provo ad accedere ai campi all'interno della struct il compilatore da errore..
    codice:
    queue[0]->data;
    "error C2223: l'elemento a sinistra di '->data' deve puntare a struct/union"

    per ovviare a questo problema devo definire un puntatore semplice alla struct e accedrvi tramite esso:
    codice:
    struct struct_albero_nodo *current;
    
    current=queue[0];
    current->data;
    cosi facendo funziona normalmente..
    spiegazioni?

    semplicemente un altro limite del c?
    thx

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [c] puntatore ad array di puntatore, limite del C oppure?

    E su questa linea

    codice:
    queue = (struct struct_albero_nodo *)calloc(1,sizeof(struct struct_albero_nodo *));
    il tuo compilatore non ti dice nulla quando compila ?

    semplicemente un altro limite del c?
    Semplicemente un altro limite del programmatore ...

    P.S. Quali sarebbero poi questi "limiti del c" ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    oregon non mi trattare male
    Semplicemente un altro limite del programmatore ...
    cmq il compilatore è il visual c++ 2008 express e il programma parte normalmente senza errrori (e funzione anche )

    potresti spiegarmi dove sbaglio?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da xnavigator
    oregon non mi trattare male
    E tu non trattare male il C ...

    cmq il compilatore è il visual c++ 2008 express e il programma parte normalmente senza errrori (e funzione anche )
    Il fatto che compili e che parta, non e' molto importante, perche' il C ti permette di fare quello che vuoi, anche quello che e' sbagliato. Almeno, ti permette di "provarci" ... a runtime ti accorgi che quello che hai scritto era sbagliato.

    Ma un compilatore che si rispetti (e il VC2008 è tra questi) ti deve dare almeno un warning, che non blocca l'esecuzione ma che tu dovresti leggere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ok ora vedo se mi da qualche warning anche se non ho capito dove sta l'errore in quella riga e cosa c'entra con il fatto che se lo dichiaro in una variabile funziona e non funziona se richiamo direttamnete -> dall'array

  6. #6
    ok oregon, mi da il warning (come dicevi tu)

    warning C4047: '=': 'struct_albero_nodo ***' differisce da 'struct_albero_nodo *' nei livelli di riferimento indiretto




    e allora come faccio a dichiarare un array (dinamico) di puntatori?

    mi bastano 2 livelli?

    **array?

    grazie

    edit: provato a mettere con 2 ** senza cambiare nient'altro... funziona uguale ( ) ma rimane il warning :S

  7. #7
    yuppie forse ho capito yuppieee

    praticamente ho dichiarato il mio array dinamico di puntatori cosi: **array;

    e lo richiamo facendo:

    (struct struct_albero_nodo **)calloc(1,sizeof(struct struct_albero_nodo *));


    giusto? ^^^^

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Giusto ... mai sottovalutare i warning ... molte volte per il C significano

    "io te lo faccio fare, ma guarda che e' sbagliato ..."
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    sisi ma lo so in php si parla di programmazione notice-free

    i notice del php sono come i warning qui... figurati prima non sapevo neanche come guardarli ora ho visto dove sta il menu per guardare gli avvisi della compilazione e li ho corretti

    thx

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.