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