Bài giảng Kỹ thuật lập trình - Bài 3: Pointer và Array - Lê Gia Minh

ppt 36 trang hoanguyen 4240
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Bài 3: Pointer và Array - Lê Gia Minh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_ky_thuat_lap_trinh_bai_3_pointer_va_array.ppt

Nội dung text: Bài giảng Kỹ thuật lập trình - Bài 3: Pointer và Array - Lê Gia Minh

  1. Kỹ thuật Lập trình Pointer và Array 1
  2. Pointer (Con trỏ ) 2
  3. Nội dung ¡ Khai báo pointer ¡ Toán tử “&” ¡ Toán tử “*” ¡ Khởi tạo pointer ¡ So trùng kiểu ¡ Truyền bằng tham chiếu ¡ Pointer chỉ đến pointer 3
  4. Tại sao phải sử dụng Pointer ¡ Dùng pointer cho phép bạn: l - Truyền bằng tham chiếu l - Xử lý mảng hiệu quả l - Xử lý structure hiệu quả l - Tạo danh sách liên kết, cây, đồ thị l - Đặt dữ liệu lên heap ¡ Phải cẩn thận khi dùng pointer 5
  5. Một số chú ý ¡ Chú ý rằng trong: char c, d, *pc; có nghĩa là “c” và “d” có kiểu char, và “pc” có kiểu là pointer chỉ đến char. ¡ Còn trong: double* pd, e, f; thì kiểu của “e” và “f” là double, KHÔNG phải pointer chỉ đến double. Điều này minh họa trường hợp nên đặt dấu “*” ngay trước biến hơn là ngay sau kiểu. ¡ Tuy nhiên dấu “*” thường đặt ngay sau kiểu theo thói quen. Để tránh nhầm lẫn bạn nên khai báo tách thành hai dòng như hai ví dụ cuối hoặc khai báo: char *start, *end; 7
  6. Cho dù hai kiểu có cùng kích thước lưu trữ cũng không thể dùng chung một con trỏ. 9
  7. Giải thích thí dụ ¡ Khai báo “i” kiểu int: int i; ¡ Khai báo pointer “p” chỉ đến int: int *p; ¡ Một dấu “*” có nghĩa là “pointer chỉ đến”. Như vậy trong khai báo: int pp; hai dấu “*” có nghĩa khai báo “pp” là pointer chỉ đến một pointer chỉ đến int. ¡ Vậy “p” chỉ đến int (chỉ đến “i”), còn “pp” chỉ đến pointer chỉ đến int (chỉ đến “p”). “*p” sẽ in ra 16. Còn: ¡ printf("%p", pp); sẽ in ra 0x2324 (địa chỉ của biến mà “pp” chỉ tới, tức địa chỉ của “p”). ¡ printf("%p", *pp); sẽ in ra 0x2320 (nội dung của biến mà “pp” chỉ tới, tức nội dung của “p”). ¡ printf("%i", pp); sẽ in ra nội dung nơi “0x2320 chỉ tới”, tức trị được lưu tại 0x0320 (biến “i”), là 16. 19
  8. Array 21
  9. Array trong C ¡ Khai báo mảng ¡ Truy xuất các phần tử ¡ Truyền mảng đến hàm ¡ Dùng pointer để truy xuất mảng ¡ Chuỗi ¡ Ký tự null 22
  10. Array (tt) ¡ Một mảng là một tập hợp nhiều mục dữ liệu (gọi là các phần tử) có cùng một kiểu dữ liệu ¡ Mảng được khai báo bằng cách dùng một kiểu, một tên biến và một HẰNG SỐ đặt trong cặp ngoặc vuông [ ] ¡ C luôn cấp phát cho mảng một khối liên tục trong bộ nhớ. ¡ Kích thước của mảng, một khi được khai báo là cố định 23
  11. Khởi tạo mảng ¡ Số các trị được khởi tạo phải bằng đúng với số phần tử khai báo trong mảng: int a[5] = { 1, 2, 3, 4, 5 }; ¡ Số các trị được khai báo nếu ít hơn số phần tử của mảng, thì các phần tử còn lại của mảng sẽ được khởi tạo bằng 0. int a[5] = { 1, 2 }; ¡ Số phần tử của mảng không được chỉ định, thì số phần tử khởi tạo sẽ xác định kích thước của mảng. int a[] = { 1, 2, 3, 4, 5 }; 25