Deklaráció és definíció: Definíciók: int i; char *ptr; double t[10][20]; char *getenv(const char *var) { // a függvény törzse } struct date { int year; int month; int day; date *next; // önhivatkozás: csak pointer esetében }; date d(2004,3,10); static int si; const int ci = 10; extern const int eci = 20; Deklarációk: extern int i; extern char *ptr; extern double t[][20]; /* extern */ char *getenv(const char* var); struct date; extern date d; /* static int si; */ /* const int ci = 10; */ extern const eci; Forward deklaráció: struct Egyik; struct Masik { Egyik *ep; }; struct Egyik { Masik *mp; }; // osztaly.h struct Osztaly { static Osztaly singleton; // deklaráció !!! }; // osztaly.cpp Osztaly Osztaly::singleton; // definíció és esetleg inicializáció tárolási_osztály típus deklarációs_lista storage_class type deklarator_list static float f, g, h; auto int i = 0, j, k = fun(); register int i = 0; extern int glob; /* delóklaráció */ typedef int size_t; /* típus-szinoníma: pl. nem lehet túlterhelni */ Elemi típuskonstrukciók: int i, *ip, t[const_kif], f(param_t par), &refi = i; ip = &i; t[i] = f(*ip); ++refi; // vigyázat!! int* ip1, ip2; // csak ip1 pointer int **ipp; // pointerre mutató pointer int tt[10][20]; // tömböket tartalmazó tömb ipp = &ip; *ipp = ip; **ipp = 5; tt[i][j] = 5; int *t[10] // ??? int *t1 [10] // pointereket tartalmazó 10 elemű tömb int (*t2)[10] // pointer egy 10 elemű tömbre double *f1 (double); // függvény, ami double* -ot ad vissza double (*f2)(double); // pointer egy double (double) függvényre extern double sin(double); extern double cos(double); double x, y; f2 = felt ? sin : cos; y = (*f2)(x); y = f2(x); // ekvivalens (*f2) -vel