Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Mảng nhiều chiều.






Mả ng nhiề u chiề u có thể đ ư ợ c coi như mả ng củ a mả ng, ví dụ, mộ t mả ng hai chiề u có thể đ ư ợ c tư ở ng tư ợ c như là mộ t bả ng hai chiề u gồ m cá c phầ n tử có kiể u dữ liệ u cụ thể và giố ng nhau.

jimmy biể u diễ n mộ t mả ng hai chiề u kí ch thư ớ c 3x5 có kiể u int . Cá ch khai bá o mả ng nà y như sau:

int jimmy [3][5];

và, ví dụ, cá ch đ ể truy xuấ t đ ế n phầ n tử thứ hai theo chiề u dọ c và thứ tư theo chiề u ngang trong mộ t biể u thứ c như sau:

jimmy[1][3]

(hã y nhớ rằ ng chỉ số củ a mả ng luô n bắ t đ ầ u từ 0 ).

Mả ng nhiề u chiề u khô ng bị giớ i hạ n bở i hai chỉ số (hai chiề u), Chú ng có thể chứ a bao nhiề u chỉ số tù y thí ch mặ c dù í t khí cầ n phả i dù ng đ ế n mả ng lớ n hơ n 3 chiề u. Hã y thử xem xé t lư ợ ng bộ nhớ mà mộ t mả ng có nhiề u chỉ số cầ n đ ế n. Ví dụ:

char century [100][365][24][60][60];

gá n mộ t giá trị char cho mỗ i giâ y trong mộ t thế kỉ, phả i cầ n đ ế n hơ n 3 tỷ giá trị chars ! Chú ng ta sẽ phả i cầ n khoả ng 3GB RAM đ ể khai bá o nó.

Mả ng nhiề u chiề u thự c ra là mộ t khá i niệ m trừ u tư ợ ng vì chú ng ta có thể có kế t quả tư ơ ng tự vớ i mả ng mộ t chiề u bằ ng mộ t thao tá c đ ơ n giả n giữ a cá c chỉ số củ a nó:

int jimmy [3][5]; tư ơ ng đ ư ơ ng vớ i
int jimmy [15]; (3 * 5 = 15)

Dư ớ i đ â y là hai ví dụ vớ i cù ng mộ t kế t quả như nhau, mộ t sử dụ ng mả ng hai chiề u và mộ t sử dụ ng mả ng mộ t chiề u:

// multidimensional array #include < iostream.h> #define WIDTH 5#define HEIGHT 3 int jimmy [HEIGHT][WIDTH]; int n, m; int main (){ for (n=0; n< HEIGHT; n++) for (m=0; m< WIDTH; m++) { jimmy[n][m]=(n+1)*(m+1); } return 0; } // pseudo-multidimensional array #include < iostream.h> #define WIDTH 5#define HEIGHT 3 int jimmy [HEIGHT * WIDTH]; int n, m; int main (){ for (n=0; n< HEIGHT; n++) for (m=0; m< WIDTH; m++) { jimmy[n * WIDTH + m]=(n+1)*(m+1); } return 0; }

khô ng mộ t chư ơ ng trì nh nà o viế t gì ra mà n hì nh như ng cả hai đ ề u gá n giá trị và o khố i nhớ có tê n jimmy theo cá ch sau:

Chú ng ta đ ã đ ị nh nghĩ a hằ ng ( #define ) đ ể đ ơ n giả n hó a nhữ ng chỉ nh sử a sau nà y củ a chư ơ ng trì nh, ví dụ, trong trư ờ ng hợ p chú ng ta quyế t đ ị nh tă ng kí ch thư ớ c củ a mả ng vớ i chiề u cao là 4 thay vì là 3, chú ng ta chỉ cầ n thay đ ổ i dò ng:

#define HEIGHT 3

thà nh

#define HEIGHT 4

và khô ng phả i có thê m sự thay đ ổ i nà o nữ a đ ố i vớ i chư ơ ng trì nh.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал