![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Chương 2: Mảng và con trỏ (array and pointer)
Số trang: 55
Loại file: doc
Dung lượng: 175.00 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Mảng là một tập cố định các phần tử cùng có chung một kiểu dữ liệu được lưu trữ kế tiếp nhau trong bộ nhớ. Các thao tác trên mảng bao gồm: tạo lập mảng (create), tìm kiếm một phần tử của mảng (retrieve), lưu trữ mảng (store). Ngoài giá trị, mỗi phần tử của mảng còn được đặc trưng bởi chỉ số của nó (index). Index của một phần tử thể hiện thứ tự của phần tử đó trong mảng. Không có các thao tác bổ sung thêm phần tử hoặc loại bỏ phần tử của mảng vì...
Nội dung trích xuất từ tài liệu:
Chương 2: Mảng và con trỏ (array and pointer) Ch¬ng 2 M¶ng vµ con trá (array and pointer) 2.1- CÊu tróc lu tr÷ m¶ng 2.1.1- Kh¸i niÖm vÒ m¶ng M¶ng lµ mét tËp cè ®Þnh c¸c phÇn tö cïng cã chung mét kiÓu d÷ liÖu ®îc lu tr÷ kÕ tiÕp nhau trong bé nhí. C¸c thao t¸c trªn m¶ng bao gåm: t¹o lËp m¶ng (create), t×m kiÕm mét phÇn tö cña m¶ng (retrieve), lu tr÷ m¶ng (store). Ngoµi gi¸ trÞ, mçi phÇn tö cña m¶ng cßn ®îc ®Æc trng bëi chØ sè cña nã (index). Index cña mét phÇn tö thÓ hiÖn thø tù cña phÇn tö ®ã trong m¶ng. Kh«ng cã c¸c thao t¸c bæ sung thªm phÇn tö hoÆc lo¹i bá phÇn tö cña m¶ng v× sè phÇn tö trong m¶ng lµ cè ®Þnh. Mét m¶ng mét chiÒu gåm n phÇn tö ®îc coi nh mét vector n thµnh phÇn ®îc ®¸nh sè tõ 0, 1, 2, . . ., n-1. Chóng ta cã thÓ më réng kh¸i niÖm m¶ng mét chiÒu cho m¶ng nhiÒu chiÒu nh sau: Mét m¶ng mét chiÒu gåm n phÇn tö, trong ®ã mçi phÇn tö cña nã l¹i lµ mét m¶ng mét chiÒu gåm m phÇn tö ®îc gäi lµ mét m¶ng hai chiÒu gåm n× m phÇn tö. Tæng qu¸t, mét m¶ng gåm n phÇn tö mµ mçi phÇn tö cña nã l¹i lµ mét m¶ng k - 1 chiÒu th× nã ®îc gäi lµ m¶ng k chiÒu. Sè phÇn tö cña m¶ng k chiÒu lµ tÝch sè gi÷a sè c¸c phÇn tö cña mçi m¶ng mét chiÒu. Khai b¸o m¶ng mét chiÒu ®îc thùc hiÖn theo qui t¾c nh sau: Tªn_kiÓu Tªn_biÕn[Sè_phÇn tö]; Ch¼ng h¹n víi khai b¸o: int A[10]; /* khai b¸o m¶ng gåm 10 phÇn tö nguyªn*/ char str[20]; /* khai b¸o m¶ng gåm 20 kÝ tù */ float B[20]; /* khai b¸o m¶ng gåm 20 sè thùc */ long int L[20]; /* khai b¸o m¶ng gåm 20 sè nguyªn dµi */ 2.1.2- CÊu tróc lu tr÷ cña m¶ng mét chiÒu CÊu tróc lu tr÷ cña m¶ng: M¶ng ®îc tæ chøc trong bé nhí nh mét vector, mçi thµnh phÇn cña vector ®îc t¬ng øng víi mét « nhí cã kÝch cì ®óng b»ng kÝch cì cña kiÓu phÇn tö vµ ®îc lu tr÷ kÕ tiÕp nhau trong bé nhí. NÕu chóng ta cã khai b¸o m¶ng gåm n phÇn tö th× phÇn tö ®Çu tiªn lµ phÇn tö thø 0 vµ phÇn tö cuèi cïng lµ phÇn tö thø n - 1, ®ång thêi m¶ng ® îc cÊp ph¸t mét vïng kh«ng gian nhí liªn tôc cã sè byte ®îc tÝnh theo c«ng thøc: KÝch_cì_m¶ng = ( Sè_phÇn_tö * sizeof (kiÓu_phÇn_tö). 35 Ch¼ng h¹n trong cã khai b¸o: int A[10]; Khi ®ã kÝch cì tÝnh theo byte cña m¶ng lµ : 10 *sizeof(int) = 20 byte; float B[20]; => m¶ng ®îc cÊp ph¸t: 20 * sizeof(float) = 80byte; Ch¬ng tr×nh dÞch cña ng«n ng÷ C lu«n qui ®Þnh tªn cña m¶ng ®ång thêi lµ ®Þa chØ phÇn tö ®Çu tiªn cña m¶ng trong bé nhí. Do vËy, nÕu ta cã mét kiÓu d÷ liÖu nµo ®ã lµ Data_type, tªn cña m¶ng lµ X, sè ph©n tö cña m¶ng lµ N th× m¶ng ®îc tæ chøc trong bé nhí nh sau: Data_type X[N]; X[0] X[1] X[2] X[3] . . . . . . . X[N- X - lµ ®Þa chØ ®Çu tiªn cña m¶ng. X = &X[0] = ( X + 0 ); &X[1] = ( X + 1 ); ............................ &X[i] = (X + i ); VÝ dô 2.1. KiÓm tra cÊu tróc lu tr÷ cña m¶ng trong bé nhí cña m¶ng mét chiÒu. #include #include #include #include void main(void) { int A[10], i ; /* khai b¸o m¶ng gåm 10 biÕn nguyªn */ printf(“\n §Þa chØ ®Çu cña m¶ng A lµ : %p”, A); printf(“\n KÝch cì cña m¶ng : %5d byte”, 10 * sizeof(int)); for ( i =0 ; i §Þa chØ ®Çu cña m¶ng: FFE2 KÝch cì cña m¶ng : 20 §Þa chØ phÇn tö thø 0 = FFE2 §Þa chØ phÇn tö thø 1 = FFE4 §Þa chØ phÇn tö thø 2 = FFE6 §Þa chØ phÇn tö thø 3 = FFE8 §Þa chØ phÇn tö thø 4 = FFEA §Þa chØ phÇn tö thø 5 = FFEC §Þa chØ phÇn tö thø 6 = FFEE §Þa chØ phÇn tö thø 7 = FFF0 §Þa chØ phÇn tö thø 8 = FFF2 §Þa chØ phÇn tö thø 9 = FFF4 VÝ dô 2.1 in ra ®Þa chØ cña c¸c phÇn tö trong m¶ng A gåm 10 phÇn tö nguyªn. KÕt qu¶ nh ®îc ®a ra ë trªn cho ta thÊy ®Þa chØ cña m¶ng trong bé nhí trïng víi ®Þa chØ cña phÇn tö A[0] ®Òu b»ng FFE2, tiÕp ®Õn c¸c phÇn tö ®îc lu tr÷ kÕ tiÕp vµ c¸ch nhau ®óng b»ng kÝch cì cña kiÓu int. B¹n ®äc cã thÓ dïng ch¬ng tr×nh ®¬n gi¶n nµy ®Ó kiÓm tra cÊu tróc l u tr÷ cña m¶ng cho c¸c kiÓu d÷ liÖu kh¸c. 2.1.3- CÊu tróc lu tr÷ m¶ng nhiÒu chiÒu §a sè c¸c ng«n ng÷ kh«ng h¹n chÕ sè chiÒu cña m¶ng, chÕ ®é cÊp ph¸t bé nhí cho m¶ng nhiÒu chiÒu ®îc thùc hiÖn theo c¬ chÕ u tiªn theo hµng. Khai b¸o m¶ng nhiÒu chiÒu : Data_type tªn_biÕn[sè_chiÒu_1] [sè_chiÒu_2]. . . [sè_chiÒu_n] int A[3][3]; khai b¸o m¶ng hai chiÒu gåm 9 phÇn tö nguyªn ®îc lu tr÷ liªn tôc tõ A[0][0] , A[0][1] , A[0][2] , A[1][0] , A[1][0] , A[1][1] , A[1][2] , A[2][0] , A[2] [1] , A[2][2] ; VÝ dô 2.2 . KiÓm tra cÊu tróc lu tr÷ cña b¶ng hai chiÒu trong bé nhí. #include #include #include #include void main(void) { 37 float A[3][3] ; /* khai b¸o m¶ng hai chiÒu gåm 9 phÇn tö nguyªn*/ int i, j; /* §Þa chØ cña c¸c hµng*/ for(i=0; i C¸c thao t¸c ®èi víi m¶ng bao gåm : t¹o lËp m¶ng, t×m kiÕm phÇn tö cña m¶ng, lu tr÷ m¶ng. C¸c thao t¸c nµy cã thÓ ®îc thùc hiÖn ngay tõ khi khai b¸o m¶ng. Chóng ta cã thÓ võa khai b¸o m¶ng võa khëi ®Çu cho m¶ng, nh ng cÇn chó ý mét sè kü thuËt khëi ®Çu cho m¶ng ®Ó võa ®¹t ® îc môc ®Ých ®Ò ra võa tiÕt kiÖm bé nhí. Ch¼ng h¹n víi khai b¸o int A[10] = { 5, 7, 2, 1, 9 }; ch¬ng tr×nh vÉn ph¶i cÊp ph¸t cho m¶ng A kÝch cì 10 * sizeof(int) = 20 byte bé nhí, trong khi ®ã sè byte cÇn thiÕt thùc sù cho m¶ng chØ lµ 5 * sizeof(int) = 10 byte. §Ó tr¸nh l·ng phÝ bé nhí, chóng ta cã thÓ võa khai b¸o võa ®ång thêi khëi ®Çu cho m¶ng nh sau. int A[] = { 5, 7, 2, 1, 9 }; Víi c¸ch khai b¸o nµy, miÒn bé nhí cÊp ph¸t cho m¶ng chØ lµ sè c¸c sè nguyªn ®îc khëi ®Çu trong d·y vµ b»ng 5 * sizof(int) = 10 byte. Sau ®©y lµ mét sè vÝ dô minh häa cho c¸c thao t¸c xö lý m¶ng mét vµ nhiÒu chiÒu ...
Nội dung trích xuất từ tài liệu:
Chương 2: Mảng và con trỏ (array and pointer) Ch¬ng 2 M¶ng vµ con trá (array and pointer) 2.1- CÊu tróc lu tr÷ m¶ng 2.1.1- Kh¸i niÖm vÒ m¶ng M¶ng lµ mét tËp cè ®Þnh c¸c phÇn tö cïng cã chung mét kiÓu d÷ liÖu ®îc lu tr÷ kÕ tiÕp nhau trong bé nhí. C¸c thao t¸c trªn m¶ng bao gåm: t¹o lËp m¶ng (create), t×m kiÕm mét phÇn tö cña m¶ng (retrieve), lu tr÷ m¶ng (store). Ngoµi gi¸ trÞ, mçi phÇn tö cña m¶ng cßn ®îc ®Æc trng bëi chØ sè cña nã (index). Index cña mét phÇn tö thÓ hiÖn thø tù cña phÇn tö ®ã trong m¶ng. Kh«ng cã c¸c thao t¸c bæ sung thªm phÇn tö hoÆc lo¹i bá phÇn tö cña m¶ng v× sè phÇn tö trong m¶ng lµ cè ®Þnh. Mét m¶ng mét chiÒu gåm n phÇn tö ®îc coi nh mét vector n thµnh phÇn ®îc ®¸nh sè tõ 0, 1, 2, . . ., n-1. Chóng ta cã thÓ më réng kh¸i niÖm m¶ng mét chiÒu cho m¶ng nhiÒu chiÒu nh sau: Mét m¶ng mét chiÒu gåm n phÇn tö, trong ®ã mçi phÇn tö cña nã l¹i lµ mét m¶ng mét chiÒu gåm m phÇn tö ®îc gäi lµ mét m¶ng hai chiÒu gåm n× m phÇn tö. Tæng qu¸t, mét m¶ng gåm n phÇn tö mµ mçi phÇn tö cña nã l¹i lµ mét m¶ng k - 1 chiÒu th× nã ®îc gäi lµ m¶ng k chiÒu. Sè phÇn tö cña m¶ng k chiÒu lµ tÝch sè gi÷a sè c¸c phÇn tö cña mçi m¶ng mét chiÒu. Khai b¸o m¶ng mét chiÒu ®îc thùc hiÖn theo qui t¾c nh sau: Tªn_kiÓu Tªn_biÕn[Sè_phÇn tö]; Ch¼ng h¹n víi khai b¸o: int A[10]; /* khai b¸o m¶ng gåm 10 phÇn tö nguyªn*/ char str[20]; /* khai b¸o m¶ng gåm 20 kÝ tù */ float B[20]; /* khai b¸o m¶ng gåm 20 sè thùc */ long int L[20]; /* khai b¸o m¶ng gåm 20 sè nguyªn dµi */ 2.1.2- CÊu tróc lu tr÷ cña m¶ng mét chiÒu CÊu tróc lu tr÷ cña m¶ng: M¶ng ®îc tæ chøc trong bé nhí nh mét vector, mçi thµnh phÇn cña vector ®îc t¬ng øng víi mét « nhí cã kÝch cì ®óng b»ng kÝch cì cña kiÓu phÇn tö vµ ®îc lu tr÷ kÕ tiÕp nhau trong bé nhí. NÕu chóng ta cã khai b¸o m¶ng gåm n phÇn tö th× phÇn tö ®Çu tiªn lµ phÇn tö thø 0 vµ phÇn tö cuèi cïng lµ phÇn tö thø n - 1, ®ång thêi m¶ng ® îc cÊp ph¸t mét vïng kh«ng gian nhí liªn tôc cã sè byte ®îc tÝnh theo c«ng thøc: KÝch_cì_m¶ng = ( Sè_phÇn_tö * sizeof (kiÓu_phÇn_tö). 35 Ch¼ng h¹n trong cã khai b¸o: int A[10]; Khi ®ã kÝch cì tÝnh theo byte cña m¶ng lµ : 10 *sizeof(int) = 20 byte; float B[20]; => m¶ng ®îc cÊp ph¸t: 20 * sizeof(float) = 80byte; Ch¬ng tr×nh dÞch cña ng«n ng÷ C lu«n qui ®Þnh tªn cña m¶ng ®ång thêi lµ ®Þa chØ phÇn tö ®Çu tiªn cña m¶ng trong bé nhí. Do vËy, nÕu ta cã mét kiÓu d÷ liÖu nµo ®ã lµ Data_type, tªn cña m¶ng lµ X, sè ph©n tö cña m¶ng lµ N th× m¶ng ®îc tæ chøc trong bé nhí nh sau: Data_type X[N]; X[0] X[1] X[2] X[3] . . . . . . . X[N- X - lµ ®Þa chØ ®Çu tiªn cña m¶ng. X = &X[0] = ( X + 0 ); &X[1] = ( X + 1 ); ............................ &X[i] = (X + i ); VÝ dô 2.1. KiÓm tra cÊu tróc lu tr÷ cña m¶ng trong bé nhí cña m¶ng mét chiÒu. #include #include #include #include void main(void) { int A[10], i ; /* khai b¸o m¶ng gåm 10 biÕn nguyªn */ printf(“\n §Þa chØ ®Çu cña m¶ng A lµ : %p”, A); printf(“\n KÝch cì cña m¶ng : %5d byte”, 10 * sizeof(int)); for ( i =0 ; i §Þa chØ ®Çu cña m¶ng: FFE2 KÝch cì cña m¶ng : 20 §Þa chØ phÇn tö thø 0 = FFE2 §Þa chØ phÇn tö thø 1 = FFE4 §Þa chØ phÇn tö thø 2 = FFE6 §Þa chØ phÇn tö thø 3 = FFE8 §Þa chØ phÇn tö thø 4 = FFEA §Þa chØ phÇn tö thø 5 = FFEC §Þa chØ phÇn tö thø 6 = FFEE §Þa chØ phÇn tö thø 7 = FFF0 §Þa chØ phÇn tö thø 8 = FFF2 §Þa chØ phÇn tö thø 9 = FFF4 VÝ dô 2.1 in ra ®Þa chØ cña c¸c phÇn tö trong m¶ng A gåm 10 phÇn tö nguyªn. KÕt qu¶ nh ®îc ®a ra ë trªn cho ta thÊy ®Þa chØ cña m¶ng trong bé nhí trïng víi ®Þa chØ cña phÇn tö A[0] ®Òu b»ng FFE2, tiÕp ®Õn c¸c phÇn tö ®îc lu tr÷ kÕ tiÕp vµ c¸ch nhau ®óng b»ng kÝch cì cña kiÓu int. B¹n ®äc cã thÓ dïng ch¬ng tr×nh ®¬n gi¶n nµy ®Ó kiÓm tra cÊu tróc l u tr÷ cña m¶ng cho c¸c kiÓu d÷ liÖu kh¸c. 2.1.3- CÊu tróc lu tr÷ m¶ng nhiÒu chiÒu §a sè c¸c ng«n ng÷ kh«ng h¹n chÕ sè chiÒu cña m¶ng, chÕ ®é cÊp ph¸t bé nhí cho m¶ng nhiÒu chiÒu ®îc thùc hiÖn theo c¬ chÕ u tiªn theo hµng. Khai b¸o m¶ng nhiÒu chiÒu : Data_type tªn_biÕn[sè_chiÒu_1] [sè_chiÒu_2]. . . [sè_chiÒu_n] int A[3][3]; khai b¸o m¶ng hai chiÒu gåm 9 phÇn tö nguyªn ®îc lu tr÷ liªn tôc tõ A[0][0] , A[0][1] , A[0][2] , A[1][0] , A[1][0] , A[1][1] , A[1][2] , A[2][0] , A[2] [1] , A[2][2] ; VÝ dô 2.2 . KiÓm tra cÊu tróc lu tr÷ cña b¶ng hai chiÒu trong bé nhí. #include #include #include #include void main(void) { 37 float A[3][3] ; /* khai b¸o m¶ng hai chiÒu gåm 9 phÇn tö nguyªn*/ int i, j; /* §Þa chØ cña c¸c hµng*/ for(i=0; i C¸c thao t¸c ®èi víi m¶ng bao gåm : t¹o lËp m¶ng, t×m kiÕm phÇn tö cña m¶ng, lu tr÷ m¶ng. C¸c thao t¸c nµy cã thÓ ®îc thùc hiÖn ngay tõ khi khai b¸o m¶ng. Chóng ta cã thÓ võa khai b¸o m¶ng võa khëi ®Çu cho m¶ng, nh ng cÇn chó ý mét sè kü thuËt khëi ®Çu cho m¶ng ®Ó võa ®¹t ® îc môc ®Ých ®Ò ra võa tiÕt kiÖm bé nhí. Ch¼ng h¹n víi khai b¸o int A[10] = { 5, 7, 2, 1, 9 }; ch¬ng tr×nh vÉn ph¶i cÊp ph¸t cho m¶ng A kÝch cì 10 * sizeof(int) = 20 byte bé nhí, trong khi ®ã sè byte cÇn thiÕt thùc sù cho m¶ng chØ lµ 5 * sizeof(int) = 10 byte. §Ó tr¸nh l·ng phÝ bé nhí, chóng ta cã thÓ võa khai b¸o võa ®ång thêi khëi ®Çu cho m¶ng nh sau. int A[] = { 5, 7, 2, 1, 9 }; Víi c¸ch khai b¸o nµy, miÒn bé nhí cÊp ph¸t cho m¶ng chØ lµ sè c¸c sè nguyªn ®îc khëi ®Çu trong d·y vµ b»ng 5 * sizof(int) = 10 byte. Sau ®©y lµ mét sè vÝ dô minh häa cho c¸c thao t¸c xö lý m¶ng mét vµ nhiÒu chiÒu ...
Tìm kiếm theo từ khóa liên quan:
cấu trúc dữ liệu thuật toán bài giảng cấu trúc dữ liệu tài liệu cấu trúc dữ liệu giáo trình cấuTài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 329 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 176 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 159 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 141 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 132 0 0 -
150 trang 106 0 0
-
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 85 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 83 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 79 0 0