Programmazione in C: liste e allocazione dinamica

di il
3 risposte

Programmazione in C: liste e allocazione dinamica

Salve a tutti.
Sto studiando le liste in C (ANSI).
In primo luogo sto trovando qualche difficoltà per cui qualcuno potrebbe consigliarmi dei manuali da leggere, pagine oppure videotutorial sull'argomento ?

In secondo luogo, nel programma che sto analizzando, per l'allocazione dinamica della memoria viene utilizzata l'espressione

struct Studente *ptr = (struct Studente*)(malloc(sizeof(struct Studente)));

apparte il fatto che non è stata usata la funzione typedef che aiuta molto,
qualcuno mi sa dire cosa fa quella precisa riga di codice?

Il problema nasce dal fatto che io invece di quella ho utilizzato
typedef struct Studente Stud;
Stud *ptr = malloc(sizeof(Stud));

Qualcuno saprebbe spiegarmi anche le differenze tra le due espressioni, se ve ne sono.

Attendo al più presto una risposta e ringrazio anticipatamente quanti mi risponderanno.

3 Risposte

  • Re: Programmazione in C: liste e allocazione dinamica

    C non si apprende su manuali o (peggio) guardando videotutorial. Si usano libri di testo (quelli classici K&R o didattici Deitel ... o tanti altri) e si studiano.

    typedef non è una funzione, comunque ...

    Non esistono differenze tra le due scritture, come vedi la parola chiave typedef è usata per creare un nuovo tipo di dato e dopo potrai scrivere

    Stud

    al posto di

    struct Studente

    P.S. Tra l'altro il titolo di questo thread dovrebbe riguardare la typedef che è quello su cui hai dubbi, non sull'allocazione dinamica
  • Re: Programmazione in C: liste e allocazione dinamica

    Indirettamente, con l'aggiunta di molte polemiche, hai risposto alle mie domande e pertanto ti ringrazio. Inoltre se ho definito funzioni qualcosa che non lo era è accaduto solo per la fretta di scrivere. La typedef la utilizzo in ogni programma che faccio e pertanto so come funziona e non ho dubbi su di essa. Gli unici dubbi che avevo erano sull'allocazione dinamica in quanto credevo che le due espressioni ritornassero un risultato differente (a livello di memoria).

    Inoltre mi dispiace contraddirti ma manuale e libro di testo sono sinonimi (il vocabolario dice:
    "Libro che riporta, con criteri informativi e didattici, le nozioni fondamentali relative a un dato argomento o a una disciplina determinata: m. di filosofia,dell'automobilista
    Da manuale, perfetto nel suo genere: un'interpretazione da m.;un gol da m.").

    Il "libro di testo" di P. Deitel e H. Deitel secondo te è all'altezza del Kerninghan e Ritchie oppure mi conviene acquistare quest'ultimo?
  • Re: Programmazione in C: liste e allocazione dinamica

    antomau96 ha scritto:


    Indirettamente, con l'aggiunta di molte polemiche
    Ma che dici ? Quali polemiche ? Mi sa che hai letto un'altra risposta ...
    se ho definito funzioni qualcosa che non lo era è accaduto solo per la fretta di scrivere.
    Perché l'hai presa come un rimprovero ? La correzione è dovuta quando c'è una cosa che non va ... è quello che ho fatto, giusto per darti informazioni corrette ...
    La typedef la utilizzo in ogni programma che faccio e pertanto so come funziona e non ho dubbi su di essa.
    Io non leggo nel pensiero. Leggo i thread.
    Gli unici dubbi che avevo erano sull'allocazione dinamica in quanto credevo che le due espressioni ritornassero un risultato differente (a livello di memoria).
    Se non hai dubbi sulla typedef allora devi sapere che quello che hai scritto è la stessa cosa, anche per la malloc.
    Inoltre ...
    Andiamo ... non essere polemico ...

    Proprio perché un manuale riporta "le nozioni fondamentali" non va bene. Devi leggere un libro in cui sono riportate "tutte" le nozioni del linguaggio.
    Il "libro di testo" di P. Deitel e H. Deitel secondo te è all'altezza del Kerninghan e Ritchie oppure mi conviene acquistare quest'ultimo?
    Il primo è più "didattico" e dedicato agli studenti, il secondo l'ha scritto chi ha inventato il linguaggio ... fai tu.
Devi accedere o registrarti per scrivere nel forum
3 risposte