Jaký je rozdíl mezi # define N 100, int n = 100?

F

fatma1000

Guest
Jaký je rozdíl mezi # define N 100 dvoulůžkových H [N], a int N = 100, dvojité H [N];
 
Ahoj secound kód nefunguje cuz, kdy u declear statické pole, kompilátor by měl zná rozměr, který i v tomto stavu hodnota n je neznámý v době překladu do běhu. ale v prvním použitím kódu od exprese u prekompilátoru # define, která je stejná jako u psaní int H [100], pokud u chcete vytvořit pole s dynamickým Dimenze z nových a DELETE. int * H = NULL; int N = 100, H = (int *) new int [N]. . . použití od H jako pole, a když u dont potřebovat víc. U by měl volné paměti na to: delete [] H, H = NULL;
 
Ahoj, int n = 100, double H [N], to nebude fungovat, ale const int N = 100, dvojité H [N], to bude fungovat, a rozdíl mezi 1) # define N 100 dvoulůžkových h [n]; a 2) const int N = 100, dvojité H [N], v případě 1, kompilátor jednoduše nahradit N s číslem definovány a kompiluje kód, to se provádí během fáze precompilation překladače V případě 2, překladač kompiluje kód, jak to je a doporučil bych to proto, že kód je více typů bezpečný tímto způsobem.
 

Welcome to EDABoard.com

Sponsor

Back
Top