Srovnání jazyků – pole
- 24. Říjen 2009
- Publikováno v Srovnání jazyků
- Napište komentář
Jsem v poslední době nucen používat víc programovacích jazyků než je zdrávo. Samozřejmě jsou mezi nimi odlišnosti a proto se mi občas pletou. Udělám si tedy na webu srovnání, třeba to pomůže i někomu dalšímu. Pro dnešek jsem zvolil problematiku polí.
C
int pole_s[10];
//definice pole s inicializaci
int pole[] = {1,2,3,4,5,6,7,8,9,10}
//pole na haldě
//definice ukazatele na int
int *pole_d;
//alokování paměti pro 10 prvků
pole_d = (int *) malloc( 10 * sizeof(int) );
//uvolnění pole na haldě z paměti
free((void*) pole_d);
//následující dvojice výrazů jsou ekvivalentní
pole[0] == *pole;
pole[5] == *(pole + 5)
C++
int pole[10];
//definice pole na zásobníku s inicializaci
int pole[] = {1,2,3,4,5,6,7,8,9,10};
//pole na haldě
int *pole_d;
pole_d = new int[10];
//odstranění pole na haldě z paměti
delete [] pole_d;
C#
int[] pole;
//inicializace pole
pole = new int[10];
//zkrácená deklarace s inicializací
int[] pole = new int[] {10, 20, 30};
//nebo
int[] pole2 = {10, 20, 30};
//dvourozměrné pravoúhlé pole
int[,] pravouhlepole;
pravouhlepole = new int[10,20];
//deklarace s inicializací pravoúhlého pole
int[,] pravouhlepole = { {10,20}, {11,12} };
//dvourozměrné "zubaté" pole
int[][] zubatepole = new int[3][];
zubatepole[0] = new int[5];
zubatepole[1] = new int[10];
zubatepole[2] = new int[15];
//zubaté pole s inicializací
int[][] zubatepole = {new int[]{10,20,30},new int[]{11,12},new int[]{13} };
Java
int[] pole;
//možná, ale nedoporučená deklarace
int pole[];
//inicializace pole
pole = new int[10];
//inicializace konkrétními hodnotami
int[] pole = {1,2,3,4,5,6,7,8,9,10};
//dvourozměrné obdélníkové pole
int[][] dvourozmernepole = new int[10][20];
//dvourozměrné "zubaté" pole
int[][] zubatepole = new int[3][];
zubatepole[0] = new int[5];
zubatepole[1] = new int[10];
zubatepole[2] = new int[15];
//inicializace dvourozměrného obdélníkového pole konkrétními hodnotami
int[][] obdelnikovepole = {{10,20},{11,21},{12,22}};
//inicializace dvourozměrného "zubatého" pole konkrétními hodnotami
int[][] obdelnikovepole = {{10,20,30},{11,21},{13}};
K čemu je dobré to přetypování na void * při uvolňování paměti v C?
Pokud funkce přebírá jako parametr ukazatel na void, je dobrým zvykem provést přetypování při volání funkce. Cílem je čitelnost programů, funkčnost to neovlivní.