Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    Liste

    Salve a tutti... avrei un bisogno di un grosso aiuto... e spero in voi... ho idee mooolto confuse riguardo gli stack, liste e cose varie... devo prepare un programma in cui creo 3 stack con la stessa struttura...


    struct colonna {
    int disco;
    struct colonna *next;
    }A,B,C;

    Ho dichiarato 3 liste di tipo colonna con questo codice? E' C o C++ (Magari è la stessa cosa)????

    Grazie in anticipo....

  2. #2
    struct colonna *next
    Che io sappia nn c'è bisogno di mettere di nuovo struct nella dichiarazione di una variabile utente

    per il tipo di codice penso sia la stessa cosa, sia per C che per C++

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Quindi potrebbe essere dichiarata anche così:


    typedef struct colonna {
    int disco;
    colonna *next;
    }A,B,C;


    ???

    E in ogni caso sono 3 liste di tipo "colonna" con i nomi "A", "B" e "C" ?????

    Grazie ancora

  4. #4
    Sisi, ma cosi' lo scope delle 3 variabili è pari a quella della struttura stessa
    (Se la dichiari fuori dal main saranno globali, se la dichiari dentro il main saranno private per il main ecc.....)
    puoi anche dichiararle dove piu ti garba all'interno del programma con

    colonna A;

    basta che la struct sia in dichiarata globale

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    perfetto.. ti ringrazio molto.. mi hai anticipato su un punto... se dichiaro la lista locale, come la passo per parametro?


    void lista(colonna *A){

    }


    void main () {

    typedef struct colonna {
    int disco;
    colonna *next;
    }A,B,C;

    lista(A);

    }


    Ho provato così ma nn va...

  6. #6
    prova a dichiarare cosi :

    codice:
    typedef struct colonna {
    int disco;
    colonna *next;
    }*A;

  7. #7
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    niente da fare... i soliti 5 errori:

    colonna' : undeclared identifier
    'A' : undeclared identifier
    '<Unknown>' : function-style initializer appears to be a function definition
    'lista' : undeclared identifier
    'A' : illegal use of this type as an expression

    I primi 3 puntano alla funzione, gli altri 2 alla chiamata di funzione

    Poi mi dice: see declaration of 'A'

    Pensavo che forse nn si può passare come parametro perhè stiamo parlando di allocazione dinamica della memoria quindi forse non avrebbe molto senso dichiarare una lista localmente... poi non so...

  8. #8
    aspe se non usi il typedef ogni volta che vuoi dichiarare una variabile devi usare anche struct, per forza.

    codice:
    typedef struct colonna {
    int disco;
    struct colonna *next;
    } column;   //In questo punto metti il nome del tipo che vuoi creare
    Ora column è un tipo di dato (proprio come int float ecc, solo che non è un tipo base).

    Per creare una variabile di tipo column fai

    codice:
    column *a;
    la funzione lista dovrà avere questo prototipo

    codice:
    void lista(column *A);
    e la chiami con
    codice:
    lista(A);

  9. #9
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    niente... 4 errori... inolte elminando funzioni e chiamate di funzioni ora mi da questo warning
    " 'A' : unreferenced local variable"

  10. #10
    questo errore è legato al fatto che A è un puntatore a cui non hai allocato memoria, dovresti fare l'allocazione dinamica con la malloc (o la new se è C++)

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.