Updatesofts.com Ebooks Team
Trang 40
Rt nhiu lp trình viên kinh nghim khuyên rng tt c các hàm nên ñược khai báo mu.
ðó cũng là li khuyên ca tôi, nht là trong trường hp có nhiu hàm hoc chúng rt dài,
khi ñó vic khai báo tt c các hàm cùng mt ch cho phép chúng ta biết phi gi các
hàm như thế nào, vì vy tiết kim ñược thi gian.
Updatesofts.com Ebooks Team
Trang 41
Mng
Mng là mt dãy các phn t có cùng kiu ñược ñặt liên tiếp trong b nh và có th truy
xut ñến tng phn t bng cách thêm mt ch s vào sau tên ca mng.
ðiu này có nghĩa là, ví d, chúng ta có th lưu 5 giá tr kiu
int
mà không cn phi khai
báo 5 biến khác nhau.Ví d, mt mng cha 5 giá tr nguyên kiu
int
có tên là billy
th ñược biu din như sau:
trong ñó mi mt ô trng biu din mt phn t ca mng, trong trường hp này là các
giá tr nguyên kiu
int
. Chúng ñược ñánh s t
0
ñến
4
vì phn t ñầu tiên ca mng
luôn là
0
bt k ñộ dài ca nó là bao nhiêu.
Như bt kì biến nào khác, mt mng phi ñược khai báo trước khi có th s dng. Mt
khai báo ñin hình cho mt mng trong C++ như sau:
type name [elements];
trong ñó
type
là mt kiu d liu hp l (int, float...),
name
là mt tên biến hp l
trường
elements
ch ñịnh mng ñó s cha bao nhiêu phn t
Vì vy, ñể khai báo billy như ñã trình bày trên chúng ta ch cn mt dòng ñơn gin như
sau:
int billy [5];
Chú ý: Trường elements bên trong cp ngoc
[]
phi là mt giá tr hng khi khai báo
mt mng, vì mng là mt khi nh tĩnh có kích c xác ñịnh và trình biên dch phi có
kh năng xác ñịnh xem cn bao nhiêu b nh ñể cp phát cho mng trước khi các lnh có
th ñược thc hin.
Khi to mt mng.
Khi khai báo mt mng vi tm hot ñộng ñịa phương (trong mt hàm), theo mc ñịnh nó
s không ñược khi to, vì vy ni dung ca nó là không xác ñịnh cho ñến khi chúng ra
lưu các giá tr lên ñó.
Nếu chúng ta khai báo mt mng toàn cc (bên ngoài tt c các hàm) nó s ñược khi to
và tt c các phn t ñược ñặt bng 0. Vì vy nếu chúng ta khai báo mng toàn cc:
Updatesofts.com Ebooks Team
Trang 42
int billy [5];
mi phn t ca billy s ñược khi to là
0
:
Nhưng thêm vào ñó, khi chúng ta khai báo mt mng, chúng ta có th gán các giá tr khi
to cho tng phn t ca nó. Ví d:
int billy [5] = { 16, 2, 77, 40, 12071 };
lnh trên s khai báo mt mng như sau:
S phn t trong mng mà chúng ta khi to vi cp ngoc nhn
{ }
phi bng s phn
t ca mng ñã ñược khai báo vi cp ngoc vuông
[ ]
. Bi vì ñiu này có th ñược coi
là mt s lp li không cn thiết nên C++ cho phép ñể trng gia cp ngoc vuông, kích
thước ca mng ñược xác ñịnh bng s giá tr gia cp ngoc nhn.
Truy xut ñến các phn t ca mng.
bt kì ñim nào ca chương trình trong tm hot ñộng ca mng, chúng ta có th truy
xut tng phn t ca mng ñể ñọc hay chnh sa nhưñối vi mt biến bình thường.
Cu trúc ca nó như sau:
name[index]
Như trong ví d trước ta có mng billy gm 5 phn t có kiu
int
, chúng ta có th truy
xut ñến tng phn t ca mng như sau:
Ví d, ñể lưu giá tr 75 vào phn t th ba ca billy ta viết như sau:
Updatesofts.com Ebooks Team
Trang 43
billy[2] = 75;
và, ví d, ñể gán giá tr ca phn t th 3 ca billy cho biến
a
, chúng ta viết:
a = billy[2];
Vì vy, xét v mi phương din, biu thc
billy[2]
ging như bt kì mt biến kiu
int
.
Chú ý rng phn t th ba ca
billy
billy[2]
, vì mng bt ñầu t ch s 0. Vì vy,
phn t cui cùng s
billy[4]
. Vì vy nếu chúng ta viết
billy[5]
, chúng ta s truy
xut ñến phn t th 6 ca mng và vượt quá gii hn ca mng.
Trong C++, vic vượt quá gii hn ch s ca mng là hoàn toàn hp l, tuy nhiên nó có
th gây ra nhng vn ñề thc s khó phát hin bi vì chúng không to ra nhng li trong
quá trình dch nhưng chúng có th to ra nhng kết qu không mong mun trong quá
trình thc hin. Nguyên nhân ca vic này s ñược nói ñến kĩ hơn khi chúng ta bt ñầu s
dng con tr.
Cn phi nhn mnh rng chúng ta s dng cp ngoc vuông cho hai tác v: ñầu tiên là
ñặt kích thước cho mng khi khai báo chúng và th hai, ñể ch ñịnh ch s cho mt phn
t c th ca mng khi xem xét ñến nó.
int billy[5]; // khai báo mt mng mi.
billy[2] = 75; // truy xut ñến mt phn t ca
mng.
Mt vài thao tác hp l khác vi mng:
billy[0] = a;
billy[a] = 75;
b = billy [a+2];
billy[billy[a]] = billy[2] + 5;
// ví d v mng
#include <iostream.h>
int billy [] = {16, 2, 77, 40,
12071};
int n, result=0;
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
}
12206
Updatesofts.com Ebooks Team
Trang 44
Mng nhiu chiu.
Mng nhiu chiu có th ñược coi như mng ca mng, ví d, mt mng hai chiu có th
ñược tưởng tược như là mt bng hai chiu gm các phn t có kiu d liu c th
ging nhau.
jimmy
biu din mt mng hai chiu kích thước 3x5 có kiu
int
. Cách khai báo mng
này như sau:
int jimmy [3][5];
và, ví d, cách ñể truy xut ñến phn t th hai theo chiu dc và th tư theo chiu ngang
trong mt biu thc như sau:
jimmy[1][3]
(hãy nh rng ch s ca mng luôn bt ñầu t
0
).
Mng nhiu chiu không b gii hn bi hai ch s (hai chiu), Chúng có th cha bao
nhiu ch s tùy thích mc dù ít khí cn phi dùng ñến mng ln hơn 3 chiu. Hãy th
xem xét lượng b nh mà mt mng có nhiu ch s cn ñến. Ví d:
char century [100][365][24][60][60];
gán mt giá tr
char
cho mi giây trong mt thế k, phi cn ñến hơn 3 t giá tr
chars
!
Chúng ta s phi cn khong 3GB RAM ñể khai báo nó.
Mng nhiu chiu thc ra là mt khái nim tru tượng vì chúng ta có th có kết qu
tương t vi mng mt chiu bng mt thao tác ñơn gin gia các ch s ca nó:
int jimmy [3][5];
tương ñương vi
int jimmy [15];
(3 * 5 = 15)