Ãëàâíàÿ ñòðàíèöà Ñëó÷àéíàÿ ñòðàíèöà ÊÀÒÅÃÎÐÈÈ: ÀâòîìîáèëèÀñòðîíîìèÿÁèîëîãèÿÃåîãðàôèÿÄîì è ñàäÄðóãèå ÿçûêèÄðóãîåÈíôîðìàòèêàÈñòîðèÿÊóëüòóðàËèòåðàòóðàËîãèêàÌàòåìàòèêàÌåäèöèíàÌåòàëëóðãèÿÌåõàíèêàÎáðàçîâàíèåÎõðàíà òðóäàÏåäàãîãèêàÏîëèòèêàÏðàâîÏñèõîëîãèÿÐåëèãèÿÐèòîðèêàÑîöèîëîãèÿÑïîðòÑòðîèòåëüñòâîÒåõíîëîãèÿÒóðèçìÔèçèêàÔèëîñîôèÿÔèíàíñûÕèìèÿ×åð÷åíèåÝêîëîãèÿÝêîíîìèêàÝëåêòðîíèêà |
Nguyễn Hữu Tuấn Chng 1
Gií i thiÖ u
Tin hä c lµ mé t ngµnh khoa hä c mò i nhä n ph¸ t triÓ n hÕ t sø c nhanh chã ng trong vµi chô c n¨ m l¹ i ®©y vµ ngµy cµng më ré ng lÜ nh vù c nghiª n cø u, ø ng dô ng trong mä i mÆ t cñ a ®ê i sè ng x· hé i. Ng«n ng÷ lË p tr× nh lµ mé t lo¹ i c«ng cô gió p con ngê i thÓ hiÖ n c¸ c vÊ n ®Ò cñ a thù c tÕ lª n m¸ y tÝ nh mé t c¸ ch h÷ u hiÖ u. Ví i sù ph¸ t triÓ n cñ a tin hä c, c¸ c ng«n ng÷ lË p tr× nh cò ng dÇ n tiÕ n ho¸ ®Ó ®¸ p ø ng c¸ c th¸ ch thø c mí i cñ a thù c tÕ. Kho¶ng cuè i nh÷ ng n¨ m 1960 ®Ç u 1970 xuÊ t hiÖ n nhu cÇ u cÇ n cã c¸ c ng«n ng÷ bË c cao ®Ó hç trî cho nh÷ ng nhµ tin hä c trong viÖ c x©y dù ng c¸ c phÇ n mÒ m hÖ thè ng, hÖ ®iÒ u hµnh. Ng«n ng÷ C ra ®ê i tõ ®ã, nã ®· ®î c ph¸ t triÓ n t¹ i phß ng thÝ nghiÖ m Bell. §Õ n n¨ m 1978, gi¸ o tr× nh " Ng«n ng÷ lË p tr× nh C " do chÝ nh c¸ c t¸ c gi¶ cñ a ng«n ng÷ lµ Dennish Ritchie vµ B.W. Kernighan viÕ t, ®· ®î c xuÊ t b¶n vµ phæ biÕ n ré ng r·i. C lµ ng«n ng÷ lË p tr× nh v¹ n n¨ ng. Ngoµi viÖ c C ®î c dï ng ®Ó viÕ t hÖ ®iÒ u hµnh UNIX, ngê i ta nhanh chã ng nhË n ra sø c m¹ nh cñ a C trong viÖ c xö lý cho c¸ c vÊ n ®Ò hiÖ n ®¹ i cñ a tin hä c. C kh«ng g¾ n ví i bÊ t kú mé t hÖ ®iÒ u hµnh hay m¸ y nµo, vµ mÆ c dÇ u nã ®· ®î c gä i lµ " ng«n ng÷ lË p tr× nh hÖ thè ng" v× nã ®î c dï ng cho viÖ c viÕ t hÖ ®iÒ u hµnh, nã cò ng tiÖ n lî i cho c¶ viÖ c viÕ t c¸ c chng tr× nh xö lý sè, xö lý v¨ n b¶n vµ c së d÷ liÖ u. Vµ b©y giê chó ng ta ®i t× m hiÓ u thÕ gií i cñ a ng«n ng÷ C tõ nh÷ ng kh¸ i niÖ m ban ®Ç u c b¶n nhÊ t. Hµ né i th¸ ng 11 n¨ m 1997 Nguyễ n Hữ u Tuấ n Chng 1 c¸ c kh¸ i niÖ m c b¶n 1.1. TË p ký tù dï ng trong ng«n ng÷ C: Mä i ng«n ng÷ lË p tr× nh ®Ò u ®î c x©y dù ng tõ mé t bé ký tù nµo ®ã. C¸ c ký tù ®î c nhã m l¹ i theo nhiÒ u c¸ ch kh¸ c nhau ®Ó t¹ o nª n c¸ c tõ. C¸ c tõ l¹ i ®î c liª n kÕ t ví i nhau theo mé t qui t¾ c nµo ®ã ®Ó t¹ o nª n c¸ c c©u lÖ nh. Mé t chng tr× nh bao gå m nhiÒ u c©u lÖ nh vµ thÓ hiÖ n mé t thuË t to¸ n ®Ó gi¶i mé t bµi to¸ n nµo ®ã. Ng«n ng÷ C ®î c x©y dù ng trª n bé ký tù sau: 26 ch÷ c¸ i hoa: A B C.. Z 26 ch÷ c¸ i thê ng: a b c.. z 10 ch÷ sè: 0 1 2.. 9 C¸ c ký hiÖ u to¸ n hä c: + - * / = () Ký tù g¹ ch nè i: _ C¸ c ký tù kh¸ c:.,:; [ ] {}! \ & % # $... DÊ u c¸ ch (space) dï ng ®Ó t¸ ch c¸ c tõ. VÝ dô ch÷ VIET NAM cã 8 ký tù, cß n VIETNAM chØ cã 7 ký tù.
Chó ý: Khi viÕ t chng tr× nh, ta kh«ng ®î c sö dô ng bÊ t kú ký tù nµo kh¸ c ngoµi c¸ c ký tù trª n. VÝ dô nh khi lË p chng tr× nh gi¶i phng tr× nh bË c hai ax2 +bx+c=0, ta cÇ n tÝ nh biÖ t thø c Delta D= b2 - 4ac, trong ng«n ng÷ C kh«ng cho phÐ p dï ng ký tù D, v× vË y ta ph¶i dï ng ký hiÖ u kh¸ c ®Ó thay thÕ.
1.2. Tõ kho¸: Tõ kho¸ lµ nh÷ ng tõ ®î c sö dô ng ®Ó khai b¸ o c¸ c kiÓ u d÷ liÖ u, ®Ó viÕ t c¸ c to¸ n tö vµ c¸ c c©u lÖ nh. B¶ng dí i ®©y liÖ t kª c¸ c tõ kho¸ cñ a TURBO C:
ý nghÜ a vµ c¸ ch sö dô ng cñ a mç i tõ kho¸ sÏ ®î c ®Ò cË p sau nµy, ë ®©y ta cÇ n chó ý: - Kh«ng ®î c dï ng c¸ c tõ kho¸ ®Ó ®Æ t tª n cho c¸ c h»ng, biÕ n, m¶ng, hµm... - Tõ kho¸ ph¶i ®î c viÕ t b»ng ch÷ thê ng, vÝ dô: viÕ t tõ kho¸ khai b¸ o kiÓ u nguyª n lµ int chø kh«ng ph¶i lµ INT.
1.3. Tª n: Tª n lµ mé t kh¸ i niÖ m rÊ t quan trä ng, nã dï ng ®Ó x¸ c ®Þ nh c¸ c ®¹ i lî ng kh¸ c nhau trong mé t chng tr× nh. Chó ng ta cã tª n h»ng, tª n biÕ n, tª n m¶ng, tª n hµm, tª n con trá, tª n tÖ p, tª n cÊ u tró c, tª n nh·n,... Tª n ®î c ®Æ t theo qui t¾ c sau: Tª n lµ mé t d·y c¸ c ký tù bao gå m ch÷ c¸ i, sè vµ g¹ ch nè i. Ký tù ®Ç u tiª n cñ a tª n ph¶i lµ ch÷ hoÆ c g¹ ch nè i. Tª n kh«ng ®î c trï ng ví i kho¸. §é dµi cù c ®¹ i cñ a tª n theo mÆ c ®Þ nh lµ 32 vµ cã thÓ ®î c ®Æ t l¹ i lµ mé t trong c¸ c gi¸ trÞ tõ 1 tí i 32 nhê chø c n¨ ng: Option-Compiler-Source-Identifier length khi dï ng TURBO C. VÝ dô: C¸ c tª n ®ó ng: a_1 delta x1 _step GAMA C¸ c tª n sai:
Chó ý: Trong TURBO C, tª n b»ng ch÷ thê ng vµ ch÷ hoa lµ kh¸ c nhau vÝ dô tª n AB kh¸ c ví i ab. trong C, ta thê ng dï ng ch÷ hoa ®Ó ®Æ t tª n cho c¸ c h»ng vµ dï ng ch÷ thê ng ®Ó ®Æ t tª n cho hÇ u hÕ t cho c¸ c ®¹ i lî ng kh¸ c nh biÕ n, biÕ n m¶ng, hµm, cÊ u tró c. Tuy nhiª n ®©y kh«ng ph¶i lµ ®iÒ u b¾ t bué c.
1.4. KiÓ u d÷ liÖ u: Trong c sö dô ng c¸ c c¸ c kiÓ u d÷ liÖ u sau: 1.4.1. KiÓ u ký tù (char): Mé t gi¸ trÞ kiÓ u char chiÕ m 1 byte (8 bit) vµ biÓ u diÔ n ®î c mé t ký tù th«ng qua b¶ng m· ASCII. VÝ dô:
Cã hai kiÓ u d÷ liÖ u char: kiÓ u signed char vµ unsigned char.
VÝ dô sau minh ho¹ sù kh¸ c nhau gi÷ a hai kiÓ u d÷ liÖ u trª n: XÐ t ®o¹ n chng tr× nh sau: char ch1; unsigned char ch2; ...... ch1=200; ch2=200; Khi ®ã thù c chÊ t: ch1=-56; ch2=200; Nhng c¶ ch1 vµ ch2 ®Ò u biÓ u diÔ n cï ng mé t ký tù cã m· 200.
Ph©n lo¹ i ký tù: Cã thÓ chia 256 ký tù lµm ba nhã m: Nhã m 1: Nhã m c¸ c ký tù ®iÒ u khiÓ n cã m· tõ 0 ®Õ n 31. Ch¼ ng h¹ n ký tù m· 13 dï ng ®Ó chuyÓ n con trá vÒ ®Ç u dß ng, ký tù 10 chuyÓ n con trá xuè ng dß ng dí i (trª n cï ng mé t cé t). C¸ c ký tù nhã m nµy nã i chung kh«ng hiÓ n thÞ ra mµn h× nh. Nhã m 2: Nhã m c¸ c ký tù v¨ n b¶n cã m· tõ 32 ®Õ n 126. C¸ c ký tù nµy cã thÓ ®î c ®a ra mµn h× nh hoÆ c m¸ y in. Nhã m 3: Nhã m c¸ c ký tù ®å ho¹ cã m· sè tõ 127 ®Õ n 255. C¸ c ký tù nµy cã thÓ ®a ra mµn h× nh nhng kh«ng in ra ®î c (b»ng c¸ c lÖ nh DOS). 1.4.2. KiÓ u nguyª n: Trong C cho phÐ p sö dô ng sè nguyª n kiÓ u int, sè nguyª n dµi kiÓ u long vµ sè nguyª n kh«ng dÊ u kiÓ u unsigned. KÝ ch cì vµ ph¹ m vi biÓ u diÔ n cñ a chó ng ®î c chØ ra trong b¶ng dí i ®©y:
Chó ý: KiÓ u ký tù cò ng cã thÓ xem lµ mé t d¹ ng cñ a kiÓ u nguyª n. 1.4.3. KiÓ u dÊ u ph¶y ®é ng: Trong C cho phÐ p sö dô ng ba lo¹ i d÷ liÖ u dÊ u ph¶y ®é ng, ®ã lµ float, double vµ long double. KÝ ch cì vµ ph¹ m vi biÓ u diÔ n cñ a chó ng ®î c chØ ra trong b¶ng dí i ®©y:
Gi¶i thÝ ch: M¸ y tÝ nh cã thÓ lu tr÷ ®î c c¸ c sè kiÓ u float cã gi¸ trÞ tuyÖ t ®è i tõ 3.4E-38 ®Õ n 3.4E+38. C¸ c sè cã gi¸ trÞ tuyÖ t ®è i nhá hn3.4E-38 ®î c xem b»ng 0. Ph¹ m vi biÓ u diÔ n cñ a sè double ®î c hiÓ u theo nghÜ a tng tù.
1.5. §Þ nh nghÜ a kiÓ u b»ng TYPEDEF: 1.5.1. C«ng dô ng: Tõ kho¸ typedef dï ng ®Ó ®Æ t tª n cho mé t kiÓ u d÷ liÖ u. Tª n kiÓ u sÏ ®î c dï ng ®Ó khai b¸ o d÷ liÖ u sau nµy. Nª n chä n tª n kiÓ u ng¾ n vµ gä n ®Ó dÔ nhí. ChØ cÇ n thª m tõ kho¸ typedef vµo trí c mé t khai b¸ o ta sÏ nhË n ®î c mé t tª n kiÓ u d÷ liÖ u vµ cã thÓ dï ng tª n nµy ®Ó khai b¸ o c¸ c biÕ n, m¶ng, cÊ u tró c, vv... 1.5.2. C¸ ch viÕ t: ViÕ t tõ kho¸ typedef, sau ®ã kiÓ u d÷ liÖ u (mé t trong c¸ c kiÓ u trª n), rå i ®Õ n tª n cñ a kiÓ u. VÝ dô c©u lÖ nh: typedef int nguyen; sÏ ®Æ t tª n mé t kiÓ u int lµ nguyen. Sau nµy ta cã thÓ dï ng kiÓ u nguyen ®Ó khai b¸ o c¸ c biÕ n, c¸ c m¶ng int nh vÝ dô sau; nguyen x, y, a[10], b[20][30]; Tng tù cho c¸ c c©u lÖ nh: typedef float mt50[50]; §Æ t tª n mé t kiÓ u m¶ng thù c mé t chiÒ u cã 50 phÇ n tö tª n lµ mt50. typedef int m_20_30[20][30]; §Æ t tª n mé t kiÓ u m¶ng thù c hai chiÒ u cã 20x30 phÇ n tö tª n lµ m_20_30. Sau nµy ta sÏ dï ng c¸ c kiÓ u trª n khai b¸ o: mt50 a, b; m_20_30 x, y; 1.6. H»ng: H»ng lµ c¸ c ®¹ i lî ng mµ gi¸ trÞ cñ a nã kh«ng thay ®æ i trong qu¸ tr× nh tÝ nh to¸ n. 1.6.1. Tª n h»ng: Nguyª n t¾ c ®Æ t tª n h»ng ta ®· xem xÐ t trong mô c 1.3. §Ó ®Æ t tª n mé t h»ng, ta dï ng dß ng lÖ nh sau: #define tª n h»ng gi¸ trÞ VÝ dô: #define MAX 1000 Ló c nµy, tÊ t c¶ c¸ c tª n MAX trong chng tr× nh xuÊ t hiÖ n sau nµy ®Ò u ®î c thay b»ng 1000. V× vË y, ta thê ng gä i MAX lµ tª n h»ng, nã biÓ u diÔ n sè 1000. Mé t vÝ dô kh¸ c: #define pi 3.141593 §Æ t tª n cho mé t h»ng float lµ pi cã gi¸ trÞ lµ 3.141593. 1.6.2. C¸ c lo¹ i h»ng: 1.6.2.1. H»ng int: H»ng int lµ sè nguyª n cã gi¸ trÞ trong kho¶ng tõ -32768 ®Õ n 32767. VÝ dô:
Chó ý: CÇ n ph©n biÖ t hai h»ng 5056 vµ 5056.0: ë ®©y 5056 lµ sè nguyª n cß n 5056.0 lµ h»ng thù c. 1.6.2.2. H»ng long: H»ng long lµ sè nguyª n cã gi¸ trÞ trong kho¶ng tõ -2147483648 ®Õ n 2147483647. H»ng long ®î c viÕ t theo c¸ ch: 1234L hoÆ c 1234l (thª m L hoÆ c l vµo ®u«i) Mé t sè nguyª n vî t ra ngoµi miÒ n x¸ c ®Þ nh cñ a int cò ng ®î c xem lµ long. VÝ dô:
1.6.2.3. H»ng int hÖ 8: H»ng int hÖ 8 ®î c viÕ t theo c¸ ch 0c1c2c3....ë ®©y ci lµ mé t sè nguyª n dng trong kho¶ng tõ 1 ®Õ n 7. H»ng int hÖ 8 lu«n lu«n nhË n gi¸ trÞ dng. VÝ dô:
1.6.2.4. H»ng int hÖ 16: Trong hÖ nµy ta sö dô ng 16 ký tù: 0, 1.., 9, A, B, C, D, E, F.
H»ng sè hÖ 16 cã d¹ ng 0xc1c2c3... hÆ c 0Xc1c2c3... ë ®©y ci lµ mé t sè trong hÖ 16. VÝ dô: #define h16 0xa5 #define h16 0xA5 #define h16 0Xa5 #define h16 0XA5 Cho ta c¸ c h¾ ng sè h16 trong hÖ 16 cã gi¸ trÞ nh nhau. Gi¸ trÞ cñ a chó ng trong hÖ 10 lµ: 10*16+5=165.
1.6.2.5. H»ng ký tù: H»ng ký tù lµ mé t ký tù riª ng biÖ t ®î c viÕ t trong hai dÊ u nh¸ y ®n, vÝ dô 'a'. Gi¸ trÞ cñ a 'a' chÝ nh lµ m· ASCII cñ a ch÷ a. Nh vË y gi¸ trÞ cñ a 'a' lµ 97. H»ng ký tù cã thÓ tham gia vµo c¸ c phÐ p to¸ n nh mä i sè nguyª n kh¸ c. VÝ dô: '9'-'0'=57-48=9 VÝ dô:
H»ng ký tù cß n cã thÓ ®î c viÕ t theo c¸ ch sau: ' \c1c2c3' trong ®ã c1c2c3 lµ mé t sè hÖ 8 mµ gi¸ trÞ cñ a nã b»ng m· ASCII cñ a ký tù cÇ n biÓ u diÔ n. VÝ dô: ch÷ a cã m· hÖ 10 lµ 97, ®æ i ra hÖ 8 lµ 0141. VË y h»ng ký tù 'a' cã thÓ viÕ t dí i d¹ ng '\141'. §è i ví i mé t vµi h»ng ký tù ®Æ c biÖ t ta cÇ n sö dô ng c¸ ch viÕ t sau (thª m dÊ u \):
Chó ý: CÇ n ph©n biÖ t h»ng ký tù '0' vµ '\0'. H»ng '0' ø ng ví i ch÷ sè 0 cã m· ASCII lµ 48, cß n h»ng '\0' ø ng ví i ký tù \0 (thê ng gä i lµ ký tù null) cã m· ASCII lµ 0. H»ng ký tù thù c sù lµ mé t sè nguyª n, v× vË y cã thÓ dï ng c¸ c sè nguyª n hÖ 10 ®Ó biÓ u diÔ n c¸ c ký tù, vÝ dô lÖ nh printf(" %c%c", 65, 66) sÏ in ra AB.
1.6.2.5. H»ng x©u ký tù: H»ng x©u ký tù lµ mé t d·y ký tù bÊ t kú ®Æ t trong hai dÊ u nh¸ y kÐ p. VÝ dô: #define xau1 " Ha noi" #define xau2 " My name is Giang" X©u ký tù ®î c lu tr÷ trong m¸ y dí i d¹ ng mé t b¶ng cã c¸ c phÇ n tö lµ c¸ c ký tù riª ng biÖ t. Tr× nh biª n dÞ ch tù ®é ng thª m ký tù null \0 vµo cuè i mç i x©u (ký tù \0 ®î c xem lµ dÊ u hiÖ u kÕ t thó c cñ a mé t x©u ký tù). Chó ý: CÇ n ph©n biÖ t hai h»ng 'a' vµ " a". 'a' lµ h»ng ký tù ®î c lu tr÷ trong 1 byte, cß n " a" lµ h»ng x©u ký tù ®î c lu tr÷ trong 1 m¶ng hai phÇ n tö: phÇ n tö thø nhÊ t chø a ch÷ a cß n phÇ n tö thø hai chø a \0.
1.7. BiÕ n: Mç i biÕ n cÇ n ph¶i ®î c khai b¸ o trí c khi ®a vµo sö dô ng. ViÖ c khai b¸ o biÕ n ®î c thù c hiÖ n theo mÉ u sau: KiÓ u d÷ liÖ u cñ a biÕ n tª n biÕ n; VÝ dô:
BiÕ n kiÓ u int chØ nhË n ®î c c¸ c gi¸ trÞ kiÓ u int. C¸ c biÕ n kh¸ c cò ng cã ý nghÜ a tng tù. C¸ c biÕ n kiÓ u char chØ chø a ®î c mé t ký tù. §Ó lu tr÷ ®î c mé t x©u ký tù cÇ n sö dô ng mé t m¶ng kiÓ u char.
VÞ trÝ cñ a khai b¸ o biÕ n: C¸ c khai b¸ o cÇ n ph¶i ®î c ®Æ t ngay sau dÊ u { ®Ç u tiª n cñ a th©n hµm vµ cÇ n ®ø ng trí c mä i c©u lÖ nh kh¸ c. Sau ®©y lµ mé t vÝ dô vÒ khai b¸ o biÕ n sai: (Kh¸ i niÖ m vÒ hµm vµ cÊ u tró c chng tr× nh sÏ nghiª n cø u sau nµy)
main() { int a, b, c; a=2; int d; /* VÞ trÝ cñ a khai b¸ o sai */ ..... }
Khë i ®Ç u cho biÕ n: NÕ u trong khai b¸ ongay sau tª n biÕ n ta ®Æ t dÊ u = vµ mé t gi¸ trÞ nµo ®ã th× ®©y chÝ nh lµ c¸ ch võ a khai b¸ o võ a khë i ®Ç u cho biÕ n. VÝ dô: int a, b=20, c, d=40; float e=-55.2, x=27.23, y, z, t=18.98; ViÖ c khë i ®Ç u vµ viÖ c khai b¸ o biÕ n rå i g¸ n gi¸ trÞ cho nã sau nµy lµ hoµn toµn tng ®ng. LÊ y ®Þ a chØ cñ a biÕ n: Mç i biÕ n ®î c cÊ p ph¸ t mé t vï ng nhí gå m mé t sè byte liª n tiÕ p. Sè hiÖ u cñ a byte ®Ç u chÝ nh lµ ®Þ a chØ cñ a biÕ n. §Þ a chØ cñ a biÕ n sÏ ®î c sö dô ng trong mé t sè hµm ta sÏ nghiª n cø u sau nµy (vÝ dô nh hµm scanf). §Ó lÊ y ®Þ a chØ cñ a mé t biÕ n ta sö dô ng phÐ p to¸ n: & tª n biÕ n
1.8 M¶ng: Mç i biÕ n chØ cã thÓ biÓ u diÔ n mé t gi¸ trÞ. §Ó biÓ u diÔ n mé t d·y sè hay mé t b¶ng sè ta cã thÓ dï ng nhiÒ u biÕ n nhng c¸ ch nµy kh«ng thuË n lî i. Trong trê ng hî p nµy ta cã kh¸ i niÖ m vÒ m¶ng. Kh¸ i niÖ m vÒ m¶ng trong ng«n ng÷ C cò ng giè ng nh kh¸ i niÖ m vÒ ma trË n trong ®¹ i sè tuyÕ n tÝ nh. M¶ng cã thÓ ®î c hiÓ u lµ mé t tË p hî p nhiÒ u phÇ n tö cã cï ng mé t kiÓ u gi¸ trÞ vµ chung mé t tª n. Mç i phÇ n tö m¶ng biÓ u diÔ n ®î c mé t gi¸ trÞ. Cã bao nhiª u kiÓ u biÕ n th× cã bÊ y nhiª u kiÓ u m¶ng. M¶ng cÇ n ®î c khai b¸ o ®Ó ®Þ nh râ: Lo¹ i m¶ng: int, float, double... Tª n m¶ng. Sè chiÒ u vµ kÝ ch thí c mç i chiÒ u. Kh¸ i niÖ m vÒ kiÓ u m¶ng vµ tª n m¶ng cò ng giè ng nh kh¸ i niÖ m vÒ kiÓ u biÕ n vµ tª n biÕ n. Ta sÏ gi¶i thÝ ch kh¸ i niÖ m vÒ sè chiÒ u vµ kÝ ch thí c mç i chiÒ u th«ng qua c¸ c vÝ dô cô thÓ dí i ®©y. C¸ c khai b¸ o: int a[10], b[4][2]; float x[5], y[3][3]; sÏ x¸ c ®Þ nh 4 m¶ng vµ ý nghÜ a cñ a chó ng nh sau:
Chó ý: C¸ c phÇ n tö cñ a m¶ng ®î c cÊ p ph¸ t c¸ c kho¶ng nhí liª n tiÕ p nhau trong bé nhí. Nã i c¸ ch kh¸ c, c¸ c phÇ n tö cñ a m¶ng cã ®Þ a chØ liª n tiÕ p nhau. Trong bé nhí, c¸ c phÇ n tö cñ a m¶ng hai chiÒ u ®î c s¾ p xÕ p theo hµng. ChØ sè m¶ng: Mé t phÇ n tö cô thÓ cñ a m¶ng ®î c x¸ c ®Þ nh nhê c¸ c chØ sè cñ a nã. ChØ sè cñ a m¶ng ph¶i cã gi¸ trÞ int kh«ng vî t qu¸ kÝ ch thí c tng ø ng. Sè chØ sè ph¶i b»ng sè chiÒ u cñ a m¶ng. Gi¶ sö z, b, x, y ®· ®î c khai b¸ o nh trª n, vµ gi¶ sö i, j lµ c¸ c biÕ n nguyª n trong ®ã i=2, j=1. Khi ®ã: a[j+i-1] lµ a[2] b[j+i][2-i] lµ b[3][0] y[i][j] lµ y[2][1] Chó ý: M¶ng cã bao nhiª u chiÒ u th× ta ph¶i viÕ t nã cã bÊ y nhiª u chØ sè. V× thÕ nÕ u ta viÕ t nh sau sÏ lµ sai: y[i] (V× y lµ m¶ng 2 chiÒ u) vv.. BiÓ u thø c dï ng lµm chØ sè cã thÓ thù c. Khi ®ã phÇ n nguyª n cñ a biÓ u thø c thù c sÏ lµ chØ sè m¶ng. VÝ dô: a[2.5] lµ a[2] b[1.9] lµ a[1] * Khi chØ sè vî t ra ngoµi kÝ ch thí c m¶ng, m¸ y sÏ vÉ n kh«ng b¸ o lç i, nhng nã sÏ truy cË p ®Õ n mé t vï ng nhí bª n ngoµi m¶ng vµ cã thÓ lµm rè i lo¹ n chng tr× nh. LÊ y ®Þ a chØ mé t phÇ n tö cñ a m¶ng: Cã mé t vµi h¹ n chÕ trª n c¸ c m¶ng hai chiÒ u. Ch¼ ng h¹ n cã thÓ lÊ y ®Þ a chØ cñ a c¸ c phÇ n tö cñ a m¶ng mé t chiÒ u, nhng nã i chung kh«ng cho phÐ p lÊ y ®Þ a chØ cñ a phÇ n tö cñ a m¶ng hai chiÒ u. Nh vË y m¸ y sÏ chÊ p nhË n phÐ p tÝ nh: & a[i] nhng kh«ng chÊ p nhË n phÐ p tÝ nh & y[i][j].
§Þ a chØ ®Ç u cñ a mé t m¶ng: Tª n m¶ng biÓ u thÞ ®Þ a chØ ®Ç u cñ a m¶ng. Nh vË y ta cã thÓ dï ng a thay cho & a[0].
Khë i ®Ç u cho biÕ n m¶ng: C¸ c biÕ n m¶ng khai b¸ o bª n trong th©n cñ a mé t hµm (kÓ c¶ hµm main()) gä i lµ biÕ n m¶ng cô c bé. Muè n khë i ®Ç u cho mé t m¶ng cô c bé ta sö dô ng to¸ n tö g¸ n trong th©n hµm. C¸ c biÕ n m¶ng khai b¸ o bª n ngoµi th©n cñ a mé t hµm gä i lµ biÕ n m¶ng ngoµi. §Ó khë i ®Ç u cho biÕ n m¶ng ngoµi ta ¸ p dô ng c¸ c qui t¾ c sau: C¸ c biÕ n m¶ng ngoµi cã thÓ khë i ®Ç u (mé t lÇ n) vµo ló c dÞ ch chng tr× nh b»ng c¸ ch sö dô ng c¸ c biÓ u thø c h»ng. NÕ u kh«ng ®î c khë i ®Ç u m¸ y sÏ g¸ n cho chó ng gi¸ trÞ 0.
VÝ dô: .... float y[6]={3.2, 0, 5.1, 23, 0, 42}; int z[3][2]={ {25, 31}, {12, 13}, {45, 15} { .... main() { .... } Khi khë i ®Ç u m¶ng ngoµi cã thÓ kh«ng cÇ n chØ ra kÝ ch thí c (sè phÇ n tö) cñ a nã. Khi ®ã, m¸ y sÏ dµnh cho m¶ng mé t kho¶ng nhí ®ñ ®Ó thu nhË n danh s¸ ch gi¸ trÞ khë i ®Ç u.
VÝ dô: .... float a[]={0, 5.1, 23, 0, 42}; int m[][3]={ {25, 31, 4}, {12, 13, 89}, {45, 15, 22} }; Khi chØ ra kÝ ch thí c cñ a m¶ng, th× kÝ ch thí c nµy cÇ n kh«ng nhá hn kÝ ch thí c cñ a bé khë i ®Ç u. VÝ dô: .... float m[6]={0, 5.1, 23, 0}; int z[6][3]={ {25, 31, 3}, {12, 13, 22}, {45, 15, 11} }; .... §è i ví i m¶ng hai chiÒ u, cã thÓ khë i ®Ç u ví i sè gi¸ trÞ khë i ®Ç u cñ a mç i hµng cã thÓ kh¸ c nhau: VÝ dô: .... float z[][3]={ {31.5}, {12, 13}, {-45.76} }; int z[13][2]={ {31.11}, {12}, {45.14, 15.09} };
Khë i ®Ç u cñ a mé t m¶ng char cã thÓ lµ Mé t danh s¸ ch c¸ c h»ng ký tù. Mé t h»ng x©u ký tù. VÝ dô: char ten[]={'h', 'a', 'g'} char ho[]='tran' char dem[10] = " van"
|