Phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 4
Số trang: 8
Loại file: pdf
Dung lượng: 83.15 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 4, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 4 Phô lôc 4 Hµm víi ®èi sè bÊt ®Þnh trong C Trong c¸c gi¸o tr×nh C thêng chØ híng dÉn c¸ch x©y dùng hµm víi c¸c ®èi cè ®Þnh. Mçi ®èi cÇn cã mé ttham sè (cïng kiÓu víi nã) trong lêi gäi hµm. Tuy nhiªn mét vµi hµm chuÈn cña C l¹i kh«ng nh vËy, m µ linhho¹t h¬n, ch¼ng khi dïng hµm printf hay scanf th× sè tham sè mµ ta cung cÊp cho hµm lµ kh«ng cè ®Þnh c¶ vÒsè lîng lÉn kiÓu c¸ch. VÝ dô trong c©u lÖnh: printf(“ Tæng = %d “ , 3+4+5) ;cã 2 tham sè, nhng trong c©u lÖnh: printf(“ Hµ Néi“ ) ;chØ cã mét tham sè. Nh vËy cÇn ph©n biÖt c¸c kh¸i niÖm sau: - §èi sè cè ®Þnh ®îc khai b¸o trong dßng ®Çu cña hµm, nã cã tªn vµ kiÓu - Tham sè øng víi ®èi sè cè ®Þnh gäi lµ tham sè cè ®Þnh - §èi bÊt ®Þnh ®îc khai b¸o bëi ba dÊu chÊm: bÊt ®Þnh c¶ vÒ sè lîng vµ kiÓu - Tham sè bÊt ®Þnh (øng víi ®èi bÊt ®Þnh) lµ mét danh s¸ch gi¸ trÞ víi sè lîng vµ kiÓu tuú ý (kh«ng x ¸c ®Þnh) Trong phô lôc nµy sÏ tr×nh bÇy c¸ch x©y dùng c¸c hµm víi ®èi sè bÊt ®Þnh. C«ng cô chñ yÕu ®îc dïng lµcon trá vµ danh s¸ch.1. BiÕn con trá BiÕn con trá (hay con trá) dïng ®Ó chøa ®Þa chØ cña biÕn, m¶ng, hµm, ... Cã nhiÒu kiÓu ®Þa chØ, v× vË y còng cãnhiÒu kiÓu con trá. BiÕn con trá ®îc khai b¸o theo mÉu: KiÓu *Tªn_biÕn_con_trá ; VÝ dô: float px ; // px lµ con trá thùc C¸c phÐp to¸n quan träng trªn con trá gåm: 561 562 + G¸n ®Þa chØ mét vïng nhí cho con trá (dïng to¸n tö g¸n, phÐp lÊy ®Þa chØ, c¸c hµm cÊp ph¸t bé nhí) + Truy nhËp vµo vïng nhí th«ng qua con trá, dïng phÐp to¸n: *Tªn_con_trá (§Ó ý ë ®©y cã 2 vïng nhí: vïng nhí cña biÕn con trá vµ vïng nhí mµ ®Þa chØ ®Çu cña nã chøa trong biÕn contrá) + Céng ®Þa chØ ®Ó con trá chøa ®Þa chØ cña phÇn tö tiÕp theo, dïng phÐp to¸n: ++ Tªn_con_trá hoÆc Tªn_con_trá ++ Chó ý r»ng c¸c phÐp to¸n trªn chØ cã thÓ thùc hiÖn ®èi víi con trá cã kiÓu.2. Danh s¸ch kh«ng cïng kiÓu Dïng con trá cã kiÓu chØ qu¶n lý ®îc mét danh s¸ch gi¸ trÞ cïng kiÓu, vÝ dô dÉy sè thùc, dÉy sè ngu yªn,dÉy c¸c cÊu tróc,.... Khi cÇn qu¶n lý mét danh s¸ch c¸c gi¸ trÞ kh«ng cïng kiÓu ta ph¶i dïng con trá kh«ng kiÓu (void) kha i b¸ onh sau: void * Tªn_con_trá ; Con trá void cã thÓ chøa c¸c ®Þa chØ cã kiÓu bÊt kú, vµ dïng ®Ó trá ®Õn vïng nhí chøa danh s¸ch cÇn qu¶nlý. Mét chó ý quan träng lµ mçi khi göi vµo hay lÊy ra mét gi¸ trÞ tõ vïng nhí, th× tuú theo kiÓu gi ¸ trÞ mµ taph¶i dïng phÐp chuyÓn kiÓu thÝch hîp ®èi víi con trá. VÝ dô sau minh ho¹ c¸ch lËp mét danh s¸ch gåm mét sènguyªn, mét sè thùc vµ mét chuçi ký tù. Chóng ta cÇn mét bé nhí ®Ó chøa sè nguyªn, sè thùc vµ ®Þa ch Ø chuçivµ dïng c¸c con trá void ®Ó qu¶n lý vïng nhí nµy. void *list , *p ; // Con trá list trá tíi ®Çu danh s¸ch // p dïng ®Ó duyÖt qua c¸c phÇn tö cña danh s¸ch list=malloc(sizeof(int) + sizeof(float)+ sizeof(char*) ); p=list; *((int*)p) = 12; // §a sè nguyªn 12 vµo danh s¸ch ((int*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo *((float*)p) = 3.14; // §a sè thùc 3.14 vµo danh s¸ch ((float*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo *((char**)p) = “HA NOI”; // §a ®Þa chØ chuçi “HA NOI” // vµo danh s¸ch // NhËn c¸c phÇn tö trong danh s¸ch p=list; // VÒ ®Çu danh s¸ch int a = *((int*)p); // NhËn phÇn tö thø nhÊt ((int*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo float x= *((float*)p); // NhËn phÇn tö thø hai ((float*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo char *str = *((char**)p) ; // NhËn phÇn tö thø ba3. Hµm víi ®èi sè bÊt ®Þnh + §èi bÊt ®Þnh bao giê còng ®Æt sau cïng vµ ®îc khai b¸o b»ng dÊu ba chÊm. VÝ dô vÝ dô hµm void f(int n, char *s, ...) ;cã 2 ®èi cè ®Þnh lµ n, s vµ ®èi bÊt ®Þnh. + §Ó nhËn ®îc c¸c tham sè bÊt ®Þnh trong lêi gäi hµm ta cÇn lu ý c¸c ®iÓm sau: - C¸c tham sè bÊt ®Þnh chøa trong mét danh s¸ch. §Ó nhËn ®îc ®Þa chØ ®Çu danh s¸ch ta dïng mét con tr ávoid vµ phÐp g¸n sau: void *list ; list = ... ; - Dïng mét tham sè cè ®Þnh kiÓu chuçi ®Ó quy ®Þnh sè lîng vµ kiÓu cña mçi tham sè trong danh s¸ch, vÝ dô: “3i” hiÓu lµ : tham sè bÊt ®Þnh gåm 3 gi¸ trÞ int “3f” hiÓu lµ : tham sè bÊt ®Þnh gåm 3 gi¸ trÞ float “fiss” hiÓu lµ cã 4 tham sè bÊt ®Þnh cã kiÓu lÇn lît lµ float, int, char*, char* Mét khi ®· biÕt ®îc ®Þa chØ ®Çu danh s¸ch, biÕt ®îc sè lîng vµ kiÓu cña mçi tham sè , th× dÔ dµng nhËn®îc gi¸ trÞ c¸c tham sè ®Ó sö dông trong th©n hµm. 563 564 VÝ dô sau ®©y minh ho¹ c¸ch x©y dùng c¸c hµm víi tham sè bÊt ®Þnh. Hµm dïng ®Ó in c¸c gi¸ t rÞ kiÓu int,float vµ char. Hµm cã mét tham sè cè ®Þnh ®Ó cho biÕt cã bao nhiªu gi¸ trÞ vµ kiÓu c¸c gi¸ trÞ cÇn i n. KiÓu quy®Þnh nh sau: i lµ int, f lµ float, s lµ char*. Tham sè cã 2 c¸ch viÕt: lÆp (gåm mét h»ng sè nguyªn vµ mét ch÷ ...
Nội dung trích xuất từ tài liệu:
Phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 4 Phô lôc 4 Hµm víi ®èi sè bÊt ®Þnh trong C Trong c¸c gi¸o tr×nh C thêng chØ híng dÉn c¸ch x©y dùng hµm víi c¸c ®èi cè ®Þnh. Mçi ®èi cÇn cã mé ttham sè (cïng kiÓu víi nã) trong lêi gäi hµm. Tuy nhiªn mét vµi hµm chuÈn cña C l¹i kh«ng nh vËy, m µ linhho¹t h¬n, ch¼ng khi dïng hµm printf hay scanf th× sè tham sè mµ ta cung cÊp cho hµm lµ kh«ng cè ®Þnh c¶ vÒsè lîng lÉn kiÓu c¸ch. VÝ dô trong c©u lÖnh: printf(“ Tæng = %d “ , 3+4+5) ;cã 2 tham sè, nhng trong c©u lÖnh: printf(“ Hµ Néi“ ) ;chØ cã mét tham sè. Nh vËy cÇn ph©n biÖt c¸c kh¸i niÖm sau: - §èi sè cè ®Þnh ®îc khai b¸o trong dßng ®Çu cña hµm, nã cã tªn vµ kiÓu - Tham sè øng víi ®èi sè cè ®Þnh gäi lµ tham sè cè ®Þnh - §èi bÊt ®Þnh ®îc khai b¸o bëi ba dÊu chÊm: bÊt ®Þnh c¶ vÒ sè lîng vµ kiÓu - Tham sè bÊt ®Þnh (øng víi ®èi bÊt ®Þnh) lµ mét danh s¸ch gi¸ trÞ víi sè lîng vµ kiÓu tuú ý (kh«ng x ¸c ®Þnh) Trong phô lôc nµy sÏ tr×nh bÇy c¸ch x©y dùng c¸c hµm víi ®èi sè bÊt ®Þnh. C«ng cô chñ yÕu ®îc dïng lµcon trá vµ danh s¸ch.1. BiÕn con trá BiÕn con trá (hay con trá) dïng ®Ó chøa ®Þa chØ cña biÕn, m¶ng, hµm, ... Cã nhiÒu kiÓu ®Þa chØ, v× vË y còng cãnhiÒu kiÓu con trá. BiÕn con trá ®îc khai b¸o theo mÉu: KiÓu *Tªn_biÕn_con_trá ; VÝ dô: float px ; // px lµ con trá thùc C¸c phÐp to¸n quan träng trªn con trá gåm: 561 562 + G¸n ®Þa chØ mét vïng nhí cho con trá (dïng to¸n tö g¸n, phÐp lÊy ®Þa chØ, c¸c hµm cÊp ph¸t bé nhí) + Truy nhËp vµo vïng nhí th«ng qua con trá, dïng phÐp to¸n: *Tªn_con_trá (§Ó ý ë ®©y cã 2 vïng nhí: vïng nhí cña biÕn con trá vµ vïng nhí mµ ®Þa chØ ®Çu cña nã chøa trong biÕn contrá) + Céng ®Þa chØ ®Ó con trá chøa ®Þa chØ cña phÇn tö tiÕp theo, dïng phÐp to¸n: ++ Tªn_con_trá hoÆc Tªn_con_trá ++ Chó ý r»ng c¸c phÐp to¸n trªn chØ cã thÓ thùc hiÖn ®èi víi con trá cã kiÓu.2. Danh s¸ch kh«ng cïng kiÓu Dïng con trá cã kiÓu chØ qu¶n lý ®îc mét danh s¸ch gi¸ trÞ cïng kiÓu, vÝ dô dÉy sè thùc, dÉy sè ngu yªn,dÉy c¸c cÊu tróc,.... Khi cÇn qu¶n lý mét danh s¸ch c¸c gi¸ trÞ kh«ng cïng kiÓu ta ph¶i dïng con trá kh«ng kiÓu (void) kha i b¸ onh sau: void * Tªn_con_trá ; Con trá void cã thÓ chøa c¸c ®Þa chØ cã kiÓu bÊt kú, vµ dïng ®Ó trá ®Õn vïng nhí chøa danh s¸ch cÇn qu¶nlý. Mét chó ý quan träng lµ mçi khi göi vµo hay lÊy ra mét gi¸ trÞ tõ vïng nhí, th× tuú theo kiÓu gi ¸ trÞ mµ taph¶i dïng phÐp chuyÓn kiÓu thÝch hîp ®èi víi con trá. VÝ dô sau minh ho¹ c¸ch lËp mét danh s¸ch gåm mét sènguyªn, mét sè thùc vµ mét chuçi ký tù. Chóng ta cÇn mét bé nhí ®Ó chøa sè nguyªn, sè thùc vµ ®Þa ch Ø chuçivµ dïng c¸c con trá void ®Ó qu¶n lý vïng nhí nµy. void *list , *p ; // Con trá list trá tíi ®Çu danh s¸ch // p dïng ®Ó duyÖt qua c¸c phÇn tö cña danh s¸ch list=malloc(sizeof(int) + sizeof(float)+ sizeof(char*) ); p=list; *((int*)p) = 12; // §a sè nguyªn 12 vµo danh s¸ch ((int*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo *((float*)p) = 3.14; // §a sè thùc 3.14 vµo danh s¸ch ((float*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo *((char**)p) = “HA NOI”; // §a ®Þa chØ chuçi “HA NOI” // vµo danh s¸ch // NhËn c¸c phÇn tö trong danh s¸ch p=list; // VÒ ®Çu danh s¸ch int a = *((int*)p); // NhËn phÇn tö thø nhÊt ((int*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo float x= *((float*)p); // NhËn phÇn tö thø hai ((float*)p)++ ; // ChuyÓn sang phÇn tö tiÕp theo char *str = *((char**)p) ; // NhËn phÇn tö thø ba3. Hµm víi ®èi sè bÊt ®Þnh + §èi bÊt ®Þnh bao giê còng ®Æt sau cïng vµ ®îc khai b¸o b»ng dÊu ba chÊm. VÝ dô vÝ dô hµm void f(int n, char *s, ...) ;cã 2 ®èi cè ®Þnh lµ n, s vµ ®èi bÊt ®Þnh. + §Ó nhËn ®îc c¸c tham sè bÊt ®Þnh trong lêi gäi hµm ta cÇn lu ý c¸c ®iÓm sau: - C¸c tham sè bÊt ®Þnh chøa trong mét danh s¸ch. §Ó nhËn ®îc ®Þa chØ ®Çu danh s¸ch ta dïng mét con tr ávoid vµ phÐp g¸n sau: void *list ; list = ... ; - Dïng mét tham sè cè ®Þnh kiÓu chuçi ®Ó quy ®Þnh sè lîng vµ kiÓu cña mçi tham sè trong danh s¸ch, vÝ dô: “3i” hiÓu lµ : tham sè bÊt ®Þnh gåm 3 gi¸ trÞ int “3f” hiÓu lµ : tham sè bÊt ®Þnh gåm 3 gi¸ trÞ float “fiss” hiÓu lµ cã 4 tham sè bÊt ®Þnh cã kiÓu lÇn lît lµ float, int, char*, char* Mét khi ®· biÕt ®îc ®Þa chØ ®Çu danh s¸ch, biÕt ®îc sè lîng vµ kiÓu cña mçi tham sè , th× dÔ dµng nhËn®îc gi¸ trÞ c¸c tham sè ®Ó sö dông trong th©n hµm. 563 564 VÝ dô sau ®©y minh ho¹ c¸ch x©y dùng c¸c hµm víi tham sè bÊt ®Þnh. Hµm dïng ®Ó in c¸c gi¸ t rÞ kiÓu int,float vµ char. Hµm cã mét tham sè cè ®Þnh ®Ó cho biÕt cã bao nhiªu gi¸ trÞ vµ kiÓu c¸c gi¸ trÞ cÇn i n. KiÓu quy®Þnh nh sau: i lµ int, f lµ float, s lµ char*. Tham sè cã 2 c¸ch viÕt: lÆp (gåm mét h»ng sè nguyªn vµ mét ch÷ ...
Tìm kiếm theo từ khóa liên quan:
lập trình căn bản lập trình C++ kinh nghiệm lập trình thủ thuật lập trình mẹo lập trìnhTài liệu liên quan:
-
114 trang 243 2 0
-
80 trang 222 0 0
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 217 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 210 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 188 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 165 0 0 -
Hướng dẫn lập trình với Android part 4
5 trang 156 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 134 0 0 -
142 trang 130 0 0
-
124 trang 114 3 0