To Omfg:
Sice nejsem PaLaDiN, ale snad mu to nebude vadit. Kazda promenna ma nejakou platnost(angl. scope, zivotnost, rikej tomu, jak chces), ktera pokud je lokalni a je bez modifikatoru static(to plati pro jayzk C) a neni vytvorena dynamicky, ma platnost jen v bloku k tomu vyhrazenem - v jazyku C je to pomoci {}, a do doby skonceni funkce.
Maly priklad ze nekecam(Pro hnidopichy - plati to i pro jednoduche datove typy, zvolil jsem tridu, aby bylo jasne, kdy se co vytvari a kdy nici ):
#include <cstdlib>
#include <iostream>
using namespace std;
class Omfg
{
const char* id;
public:
Omfg(const char * msg):id(msg) {cout << "Vytvarim " << id<< "objekt" <<endl;}
~Omfg(){cout << "Nicim " << id <<" objekt" << endl;}
};
Omfg o("globalni"); // vytvori globalni objekt - plati do skonceni programu
void fce()
{
Omfg o("uvnitr fce");//plati do skonceni fce
}
int main(int argc, char *argv[])
{
Omfg o1("lokalni");
{
Omfg o2("lokalni v bloku");
}
fce();
// tady uz o2 neexistuje
system("PAUSE");
return EXIT_SUCCESS;
}
----------------------------
Vystup z CMD:
C:>cd Dev-Cpp
C:Dev-Cpp>omfg.exe
Vytvarim globalniobjekt
Vytvarim lokalniobjekt
Vytvarim lokalni v blokuobjekt
Nicim lokalni v bloku objekt
Vytvarim uvnitr fceobjekt
Nicim uvnitr fce objekt
Pokračujte stisknutím libovolné klávesy...
Nicim lokalni objekt
Nicim globalni objekt
C:Dev-Cpp>