Bài giảng Nhập môn lập trình - Bài 6: Xử lý chuỗi và con trỏ (Tiếp)

1. Khái niệm

2. Các thao tác trên con trỏ

3. Cấp phát bộ nhớ

4. Con trỏ và mảng

 

 

pptx47 trang | Chuyên mục: Lập Trình Mạng | Chia sẻ: dkS00TYs | Lượt xem: 5368 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Nhập môn lập trình - Bài 6: Xử lý chuỗi và con trỏ (Tiếp), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level Fifth level 04/02/2015 ‹#› Bài 6: Xử Lý Chuỗi & Con trỏ 2 1. Khái niệm 2. Các thao tác trên con trỏ 3. Cấp phát bộ nhớ 4. Con trỏ và mảng ĐỊA CHỈ CỦA BIẾN Thông tin của một biến bao gồm: *Tên biến *Kiểu dữ liệu của biến *Giá trị của biến Mỗi biến sẽ được lưu trữ tại một vị trí xác định trong ô nhớ, nếu kích thước của biến có nhiều byte thì máy tính sẽ cấp phát một dãy các byte liên tiếp nhau, địa chỉ của biến sẽ lưu byte đầu tiên trong dãy các byte này ĐỊA CHỈ CỦA BIẾN * Ví dụ khai báo: float x; int a; Byte 1 Byte 2 Byte 3 Byte 4 Địa chỉ biến x Các ô nhớ của biến x Byte 100 Byte 101 Byte 102 Byte 103 Địa chỉ biến a Các ô nhớ của biến a Địa chỉ của biến luôn luôn là một số nguyên (hệ thập lục phân) dù biến đó chứa giá trị là số nguyên, số thực hay ký tự, … Cách lấy địa chỉ của biến & tênbiến Ví dụ: void main() { int x=7; float y=10.5; cout=&   3. Toán tử con trỏ (pointer operators) Ví dụ: 	 a 25 x y 25 int a=25, x; int *y; x=a;; y=&a; y=a;//sai y 3. Toán tử con trỏ (pointer operators) Toán tử * : là toán tử một ngôi trả về giá trị tại địa chỉ con trỏ trỏ đến. Cú pháp: * Ví dụ: a=*p ; 	a=p;//sai   Lệnh gán con trỏ 	Có thể dùng phép gán để gán giá trị của một con trỏ cho một con trỏ khác có cùng kiểu Ví dụ: int x=10; int *p1, *p2; p1 = &x; p2 = p1; 	Sau khi đọan lệnh trên được thực hiện, cả hai p1 và p2 cùng trỏ đến biến x. 4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ X=10 p1 p2 Phép toán số học trên con trỏ Chỉ có 2 phép toán sử dụng trên con trỏ là phép cộng và trừ Khi cộng (+) hoặc trừ (-) 1 con trỏ với 1 số nguyên N; kết quả trả về là 1 con trỏ. Con trỏ này chỉ đến vùng nhớ cách vùng nhớ của con trỏ hiện tại một số nguyên lần kích thước của kiểu dữ liệu của nó. 4. Các thao tác trên con trỏ Ví dụ : 	char *a;short *b;long *c; Các con trỏ a, b, c lần lượt trỏ tới ô nhớ 1000, 2000 và 3000. Cộng các con trỏ với một số nguyên: 	a = a + 1;//con trỏ a dời đi 1 byteb = b + 1;//con trỏ b dời đi 2 byte c = c + 1; //con trỏ c dời đi 4 byte 4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ Lưu ý: cả hai toán tử tăng (++) và giảm (--) đều có quyền ưu tiên lớn hơn toán tử * Ví dụ: *p++; 	Lệnh *p++ tương đương với *(p++) : thực hiện là tăng p (địa chỉ ô nhớ mà nó trỏ tới chứ không phải là giá trị trỏ tới). 4. Các thao tác trên con trỏ Ví dụ: *p++ = *q++; Cả hai toán tử tăng (++) đều được thực hiện sau khi giá trị của *q được gán cho *p và sau đó cả q và p đều tăng lên 1. Lệnh này tương đương với: 	*p = *q;p++;q++; 4. Các thao tác trên con trỏ #include #include void main () { int a = 20, b = 15, *pa, *pb, temp; pa = &a; // con trỏ pa chứa địa chỉ của a pb = &b; // con trỏ pb chứa địa chỉ của b temp = *pa; *pa = *pb; *pb = temp; cout void main(){ int *p = new int; // allocate space for an int if(p==NULL){ 	cout Ví dụ: #include void main() { 	int *p;cout [0] & [] + [] *( + ) 8. Con trỏ và mảng Ví dụ: #include #include void main () { 	int numbers[5], * p; 	p = numbers; *p = 10; 	p++; *p = 20; 	p = &numbers[2]; *p = 30; 	p = numbers + 3; *p = 40; 	p = numbers; *(p+4) = 50; 	for (int n=0; n void main() { 	int a[] = {113,4,7,0,5,6,3,7,8,9}; 	int *p; 	p = a; 	for(int i=0 ; i<10 ; i++) 	{ 	*(p+i) *= 10; //tuong duong a[i] = a[i]*10 	cout << “a[“ << i << “] = “ << *(p+i) << ”\n”; 	} } 9. Mảng con trỏ Mỗi biến con trỏ là một biến đơn. Ta có thể tạo mảng của các con trỏ với mỗi phần tử của mảng là một con trỏ. Cú pháp: type *pointerArray[elements]; type: kiểu dữ liệu mà các con trỏ phần tử trỏ đến. pointerArray: tên mảng con trỏ. elements: số phần tử của mảng con trỏ. 9. Mảng con trỏ Ví dụ: p a 100 int *p[5]; int a=6; p[0] = &a; 100 p[2] = p[0]; 100 6 int b; b b = *p[0]; 6 P[0] P[1] P[2] P[3] P[4] 

File đính kèm:

  • pptx6.NMLT_XuLyChuoi_ConTro(3g)-02.pptx