Chương 2: Các kiểu dữ liệu cơ bản
lượt xem 127
download
Nội dung: - Kiểu mảng và chuỗi - Kiểu cấu trúc - Kiểu con trỏ - Kiểu tập tin - Độ phức tạp thuật toán
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương 2: Các kiểu dữ liệu cơ bản
- Chương 2 Các kiểu dữ liệu cơ bản Nội dung 1 Kiểu mảng và chuỗi 2 Kiểu cấu trúc 3 Kiểu con trỏ 4 Kiểu tập tin 5 Độ phức tạp thuật toán
- Chương 2 Các kiểu dữ liệu cơ bản Các cấu trúc lưu trữ trên bộ nhớ chính Kiểu chuỗi (String) Một chuỗi là dãy liên tiếp các ký tự kết thúc bằng ký tự \0 có mã ASCII bằng 0 (NULL character) Trong C chuỗi có tối đa 65535 ký tự Các hàm xử lý chuỗi được đặt trong thư viện string.h của C. 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu chuỗi (String) Khai báo chuỗi: có thể dùng các cách sau char S[10]; //Khai báo một chuỗi ký tự S có chiều dài // tối đa 10 (kể cả kí tự kết thúc) char S[]="ABC";// Khai báo một chuỗi ký tự S có chiều // dài bằng chiều dài của chuỗi "ABC" // và giá trị khởi đầu của S là 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu chuỗi (String) Một số thao tác trên chuỗi So sánh 2 chuỗi: strcmp Sao chép chuỗi: strcpy Độ dài chuỗi: strlen Kiểm tra 1 chuỗi nằm trong chuỗi kia: strstr Cắt 1 từ ra khỏi 1 chuỗi: strtok Đổi 1 số ra chuỗi: itoa Đổi 1 chuỗi ra số: atoi, atof, ... Nhập một chuỗi: gets Xuất một chuỗi: puts 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu mảng (Array) Mảng là một tập hợp các biến có cùng tên và kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ Mỗi phần tử được đánh chỉ số (Index), phần tử đầu tiên có chỉ số là 0 Trong C, một mảng n chiều có thể coi là mảng 1 chiều trong đó mỗi phần tử là 1 mảng n-1 chiều. 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu mảng (Array): Khai báo mảng [][]...; Ví dụ, ta có thể khai báo: Float a[10]; //khai báo mảng 1 chiều có 10 phần tử int a[100][150];//khai báo mảng 2 chiều int a[][]={{1, 7, -3, 8, 19},{4, 5, 2, 8, 9},{21, -7, 45, -3, 4}}; 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu hợp (Union) Union là một kiểu dữ liệu đặc biệt trong C, nó tương tự kiểu struct nhưng các phần tử lại dùng chung một vùng nhớ Cách thức truy xuất đến các thành phần trong kiểu Union giống như kiểu cấu trúc Dùng kiểu Union khi cần lưu trữ dữ liệu thay đổi theo trạng thái 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu hợp (Union): Khai báo kiểu union typedef union { Ví dụ, ta có thể định nghĩa kiểu số sau: ; ; typedef union tagNumber ……… { }[]; int i; long l; }Number; Number N; Khi gán N.l=0xFF09 thì thành phần N.i sẽ nhận giá trị là 9 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu cấu trúc (Structure) Kiểu cấu trúc (hay kiểu mẫu tin) là một tập hợp các biến khác tên và có thể khác nhau về kiểu dữ liệu Cách thức truy xuất đến các thành phần trong kiểu cấu trúc: Têncấutrúc.Tênthànhphần Dùng kiểu cấu trúc khi muốn lưu trữ thông tin của các đối tượng phức tạp và đa dạng 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu cấu trúc (Structure): Khai báo kiểu cấu trúc typedef struct Ví dụ, ta có thể định nghĩa kiểu cấu { trúc ngày tháng như sau: ; typedef struct ; { ……… int ngay; int thang; }[]; int nam; }Ngaythang; Ngaythang N;//khai báo biến 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu cấu trúc (Structure): Truy xuất dữ liệu Cách thức truy xuất đến các thành phần trong kiểu cấu trúc: Têncấutrúc.Tênthànhphần Để lấy địa chỉ của một thành phần trong cấu trúc, ta dùng toán tử &: &Têncấutrúc.Tênthànhphần Vd: Ngaythang N,M; printf(“Nhập ngày tháng: ”); scanf(“%d/%d/%d”,&N.ngay,&N.thang,&N.nam); M=N;//gán biến cấu trúc N vào biến M 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu cấu trúc (Structure): Hàm và kiểu cấu trúc Đối của hàm có thể là: - Biến mẫu tin: khi đó tham số thực tương ứng là một giá trị mẫu tin - Tham chiếu mẫu tin: khi đó tham số thực tương ứng là một địa chỉ mẫu tin - Con trỏ mẫu tin: khi đó tham số thực là địa chỉ của biến cấu trúc. Hàm có thể trả về: - Giá trị mẫu tin: Ngaythang tênhàm(...) - Con trỏ mẫu tin: Ngaythang *tênhàm(....) 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Kiểu con trỏ là một kiểu dữ liệu đặc biệt trong C, có kích thước 2 bytes và dùng để chứa địa chỉ của một biến đã được cấp phát bộ nhớ Khi biến con trỏ chứa địa chỉ của biến A ta nói nó đang trỏ tới biến (vùng nhớ) A Nếu con trỏ chứa giá trị NULL nghĩa là nó không trỏ đến vùng nhớ nào hết 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Khai báo biến con trỏ Trực tiếp: *; Vd: int *P,*Q;//khai báo biến Gián tiếp: typedef *; ; Vd: typedef int *intPointer;//khai báo kiểu intPointer P,Q;//khai báo biến 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Khai báo biến con trỏ Con trỏ void: con trỏ được khai báo kiểu void có thể chứa địa chỉ của bất kỳ kiểu nào. Tuy nhiên trước khi sử dụng phải ép về một kiểu cụ thể Vd: int X; float Y; void *P; P=&X; //P trỏ đến X (float*) P=&Y; //P trỏ đến Y (int*) P=&X; //P trỏ đến X 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Các thao tác Gán địa chỉ một biến cho con trỏ tênbiếncontrỏ = &tênbiếncầnlấyđịachỉ; tênbiếncontrỏ = NULL; Ví dụ: Chứa địa chỉ của mảng 1 chiều: int *P , A[10]; --> P = A; Chứa địa chỉ của mảng 2 chiều: float *P, B[3][4]; --> P = (float*) B; Chứa địa chỉ của 1 biến cấu trúc: struct HocSinh *P, hs; --> P = &hs; 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Các thao tác Truy xuất nội dung 1 biến do biến con trỏ trỏ đến Cú pháp: *tênbiếncontrỏ Lưu ý: toán tử * và & có cùng độ ưu tiên Ví dụ: int X, *P; X=10; P=&X; //P trỏ đến X printf(“Giá trị X là: %d”,X); printf(“Giá trị do P trỏ đến: %d”,*P); 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Các phép toán So sánh địa chỉ chứa trong hai con trỏ, dùng toán tử == hoặc != Khi sử dụng con trỏ trên mảng, ta có thể thực hiện các phép toán sau Cộng địa chỉ con trỏ: pt + i ==>Cộng địa chỉ vùng nhớ lưu trong pt với i*sizeof(T) Trừ hai con trỏ: pt1-pt2 12/04/09 www.lhu.edu.vn
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Con trỏ và mảng 1 chiều Tên mảng là hằng địa chỉ của phần tử đầu tiên trong mảng, có thể thực hiện phép cộng địa chỉ với tên mảng. Khi đó (A+i) tương ứng với &A[i] Ta cũng có thể sử dụng con trỏ trên mảng với các phép toán sau Lấy địa chỉ phần tử thứ i : &A[i] Cộng địa chỉ Vd: int i, *p, A[3]={10,20,30}; p=A;// hoặc p=&A[0]; for (i=0;i
- Chương 2 Các kiểu dữ liệu cơ bản Các cấểu dữ liưu trữ cấu trúcnhớ chính Các ki u trúc l ệu có trên bộ Kiểu con trỏ (Pointer) Con trỏ và mảng 2 chiều Tên mảng là hằng địa chỉ của phần tử đầu tiên trong mảng, có thể thực hiện phép cộng địa chỉ với tên mảng. Khi đó (A+i) tương ứng với &A[i][0] Vd: float A[3][2]; ta có A ứng với &A[0][0]; (A+1) ứng với &A[1][0]; (A+2) ứng với &A[2][0] Ta cũng có thể sử dụng con trỏ trên mảng với các phép toán sau Lấy địa chỉ phần tử A[i][j] : p+i*sốcột+j Cộng địa chỉ 12/04/09 www.lhu.edu.vn
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học đại cương - Chương 2: Kiểu dữ liệu - Biến - Biểu thức
0 p | 329 | 134
-
Ngôn ngữ lập trình C++ Chương 2 – Các kiểu dữ liệu cơ bản Các cấu trúc
38 p | 372 | 118
-
Bài giảng Kỹ thuật lập trình - Chương 2: Các yếu tố cơ bản của C và C++
64 p | 277 | 61
-
Bài giảng Ngôn ngữ lập trình C++: Chương 2 - Trần Minh Châu
38 p | 235 | 58
-
Ngôn ngữ lập trình C++ - Chương 2 – Các kiểu dữ liệu cơ bản
38 p | 160 | 29
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 2: Kiểu dữ liệu
63 p | 126 | 18
-
Bài giảng Lập trình hướng đối tượng - Chương 2: Ngôn ngữ lập trình Java (ĐH Cần Thơ)
160 p | 136 | 17
-
Chương 2 – Các kiểu dữ liệu cơ bản Các cấu trúc điều khiển
38 p | 78 | 7
-
Bài giảng Lập trình hướng đối tượng (Object-Oriented Programming): Phần 1 - GV. Ngô Công Thắng
62 p | 11 | 5
-
Bài giảng Lập trình C: Chương 2 - Ngô Công Thắng
10 p | 61 | 5
-
Bài giảng Lập trình C: Chương 02 - GV. Ngô Công Thắng
5 p | 22 | 4
-
Bài giảng Tin học đại cương 1: Chương 2 - ThS. Nguyễn Thị Mỹ
20 p | 74 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 2: Các kiểu dữ liệu và thao tác (GV. Nguyễn Nhật Nam)
36 p | 26 | 3
-
Bài giảng Lập trình hướng đối tượng (Object-Oriented Programming) - Chương 1-2: Các kiểu dữ liệu cơ bản trong C++
12 p | 6 | 3
-
Bài giảng Lập trình nâng cao (Advanced Programming) - Chương 2: Các kiểu dữ liệu cơ sở
5 p | 6 | 2
-
Giáo trình Kỹ thuật ngôn ngữ lập trình (Ngành: Điện tử công nghiệp - Trình độ Cao đẳng) - Trường Cao đẳng Hòa Bình Xuân Lộc
42 p | 1 | 0
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn