PDA

Visualizza la versione completa : [C]Istruzione typedef


carlo10
19-10-2006, 11:57
Sto imparando il C da poco tempo e mi sarebbe utile una spiegazione molto pratica dell'istruzione typedef della quale non riesco a capire molto bene l'utilit...
l'ho vista prima prima della dichiarazione di una struttura e del puntatore a una struttura..

ringrazio tutti quelli che mi saranno d'aiuto

carlo10
19-10-2006, 12:44
ho capito che prima di una struttura serve a dichiarare un nuovo ti po di dato proprio come se si trattasse di un int char ecc.,,ma non ho capito a cosa serva prima di un puntatore
ad esempio


typedef struct rec *lpointer

carlo10
19-10-2006, 12:51
typedef struct rec *lpointer; /*2*/

typedef struct rec

{

char titolo[50];

char autore[20];

char editore[20];

long int prezzo;

lpointer next; /*3*/

}libro;



Un'altra cosa...nella struttura rec dopo l'ultima parentesi graffa appare libro...che senso ha?
La struttura si chiama libro o rec?

doraemon83
19-10-2006, 13:00
messo prima di un puntatore ti permette di dichiarare un puntatore a quella struttura semplicemente scrivendo :

libro miolibro;

senza indicare nel codice del programma che stai utilizzando un puntatore, ma soltanto nella definizione della struttura

carlo10
19-10-2006, 13:08
Originariamente inviato da doraemon83
messo prima di un puntatore ti permette di dichiarare un puntatore a quella struttura semplicemente scrivendo :

libro miolibro;

senza indicare nel codice del programma che stai utilizzando un puntatore, ma soltanto nella definizione della struttura

grazie, penso di avere capito..per l'altra domanda?

andbin
19-10-2006, 13:12
Vediamo di chiarire:

struct libro
{
char titolo[30];
char autore[30];
};

Questa una semplice struttura. Quando dovrai creare delle variabili di questa struttura, dovrai fare:

struct libro unLibro;

facendo invece:

typedef struct libro
{
char titolo[30];
char autore[30];
} LIBRO;

Puoi poi dichiarare:

LIBRO unLibro;

Nota che con la typedef, la parola 'libro' dopo struct la potresti anche togliere.

A quel punto potresti fare:

typedef LIBRO* PLIBRO;

e ottieni PLIBRO che un nuovo tipo di dato che un puntatore a LIBRO.

carlo10
19-10-2006, 13:19
quindi il vero tipo quello dichiarato dopo l'ultima graffa mentre quello dichiarato dopo struct opzionale e non serve a nulla, giusto?

andbin
19-10-2006, 13:42
Originariamente inviato da carlo10
quindi il vero tipo quello dichiarato dopo l'ultima graffa mentre quello dichiarato dopo struct opzionale e non serve a nulla, giusto?
No allora, per essere pi precisi:

La seguente una struttura "anonima" (senza nome) ma con 2 variabili gi dichiarate.

struct
{
char titolo[30];
char autore[30];
} unLibro, secondoLibro;

La seguente una struttura "standard".

struct libro
{
char titolo[30];
char autore[30];
};

struct libro unLibro;
struct libro secondoLibro;

La seguente una struttura con typedef. In questo caso 'libro' dopo struct opzionale, se lo ometti, diventa una struttura "anonima" ma con il typedef hai LIBRO per poterla usare.

typedef struct libro
{
char titolo[30];
char autore[30];
} LIBRO;

Ok?

carlo10
19-10-2006, 13:46
si grazie...molto simpatica la tua firma...per ora sono uno di quelli che non hanno capito i puntatori...ma ci sto provando...ciao alla prossima

Loading