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