čtvrtek 12. března 2009

Definice polí v C++

Vytvořil jsem malý příklad na práci s poli. Pole jsou v C/C++ indexována od 0 a poslední prvek je (počet prvků - 1). Přístup mimo vyhrazenou paměť operační systém trestá okamžitou terminací. Při vytváření pole zvažte v jakém pořadí do něj budete přistupovat, pro převládající přístup po řádkách zvolte pole[řádek][sloupec], pro přístup po sloupcích pole[sloupec][řádek].


int main() {
const int cx = 40;
const int cy = 20;
int x = 40;
int y = 20;

/*------ both static ---------------*/
int sa1[cy][cx];
sa1[4][5] = 0;

//ugly and possible
4[ 5[sa1] ] = 0;

//!!!!!!! REALLY REALLY BAD !!!!!!!!
//int **matrix = (int **) new int[cy][cx];

int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int m[][2] = {{1,2},{3,4}};

/*------ one dynamic -------------- */
int (*sa2)[cx];
sa2 = new int[y][cx];
sa2[4][5] = 0;
delete sa2;

/*------ both bounds dynamic -------*/
//linear array
int *a1;
a1 = new int[20*40];
a1[4*x + 5] = 0; //means a1[4][5] = 0
delete a1;

//double pointer
int **a2;
a2 = new int*[y];
a2[0] = new int[x*y];
for (int i=0; i<y; i++) {
a2[i] = a2[0] + i*x;
}
a2[4][5] = 0;
delete a2[0];
delete a2;

return 0;
}

Žádné komentáře:

Okomentovat