Code:
struct DATE {
int month;
int day;
int year;
} DATE;
This isn't a typedef. It simply defines a structure of type 'struct DATE', and then declares a variable of that type called 'DATE'. To make additional instances of this type, you need to use 'struct DATE' everywhere you want one.
Code:
typedef struct{
char name[30];
char ic[30];
struct DATE birthdate;
} STUDENT;
This does use a typedef, making a new type called 'STUDENT'. Every time you want an instance of this type, you now just need to write 'STUDENT varname;'
Code:
typedef struct {
char course[30];
struct DATE commencingdate; // that is correct
struct STUDENT studentdata; // this is not
} COURSE;
Quzah.