C/Tablice: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Literówka w listingu
Linia 105:
</source>
Innym, bardziej elastycznym sposobem deklarowania tablic wielowymiarowych, jest użycie wskaźników. Opisane to zostało w następnym [[C/Wskaźniki#Tablice wielowymiarowe|rozdziale]].
 
 
===Kolejność głównych wierszy===
Kolejność głównych wierszy ( ang. Row Major Order = ROM <ref>[[:w:en:Row-major_order|Row-major_order w ang wikipedii]]</ref>)
 
W C tablica A[n][m] :
* przechowywana jest wierszami<ref>[http://galaxy.agh.edu.pl/~kzajac/dydakt/mownit/lab3/ Metody obliczeniowe w nauce i technice - laboratorium informatyka II rok, Katarzyna Zając]</ref> :
* numeracja indeksów rozpoczyna się od zera
 
A[0][0], A[0][1], ..., A[0][m-1], A[1][0], A[1][1],..., A[n-1][m-1]
 
Przykładowy program :
<source lang=c>
/*
http://stackoverflow.com/questions/2151084/map-a-2d-array-onto-a-1d-array-c/2151113
 
*/
#include <stdio.h>
 
int main(int argc, char **argv) {
int i, j, k;
int arr[5][3];
int *arr2 = (int*)arr;
 
for (k=0; k<15; k++) {
arr2[k] = k;
printf("arr[%d] = %2d\n", k, arr2[k]);
}
 
for (i=0; i<5; i++) {
for (j=0; j< 3; j++) {
printf("arr2[%d][%d] = %2d\n", i, j ,arr[i][j]);
}
}
}
</source>
 
== Ograniczenia tablic ==