tailieunhanh - Bài giảng Nhập môn Lập trình: Phần 5
Bài giảng Nhập môn Lập trình: Phần 5 - Con trỏ - Pointer giới thiệu tới các bạn về một số lý do nên sử dụng con trỏ; khai báo trong C; toán tử “&”; truyền tham số địa chỉ; con trỏ NULL; toán tử gán “=” con trỏ và mảng; chuỗi ký tự - String; cấu trúc - Struct. | Con trỏ - Pointer Con trỏ – Pointer Khai báo Các toán tử “&”, “*”, “=”, “+” Nhắc lại về truyền tham số địa chỉ Con trỏ và mảng Cấp phát vùng nhớ động Con trỏ – Một số lý do nên sử dụng Con trỏ là kiểu dữ liệu lưu trữ địa chỉ của các vùng dữ liệu trong bộ nhớ máy tính Kiểu con trỏ cho phép: Truyền tham số kiểu địa chỉ Biểu diễn các kiểu, cấu trúc dữ liệu động Lưu trữ dữ liệu trong vùng nhớ heap Con trỏ đã được sử dụng trong hàm scanf Con trỏ – Khai báo trong C Kiểu con trỏ phải được định nghĩa trên một kiểu cơ sở đã được định nghĩa trước đó. typedef kiểucơsở *Tênkiểu; typedef int *PINT; //PINT là kiểu con trỏ - địa chỉ vùng nhớ kiểu int int x; PINT p; //p, p1: biến kiểu int * int *p1; int *pi; long int *p; float* pf; char c, d, *pc; /* c và d kiểu char pc là con trỏ đến char */ double* pd, e, f; /* pd là con trỏ đến double e and f are double */ char *start, *end; Con trỏ – Khai báo trong C 0x91A2 0x1132 Con trỏ - Toán tử “&” “&”: toán tử lấy địa chỉ của 1 biến Địa chỉ của tất cả các biến trong chương trình đều đã được chỉ định từ khi khai báo char g = 'z'; int main() { char c = 'a'; char *p; p = &c; p = &g; return 0; } p c 'a' 0x1132 p g 'z' 0x91A2 “*”: toán tử truy xuất giá trị của vùng nhớ được quản lý bởi con trỏ. #include char g = 'z'; int main() { char c = 'a'; char *p; p = &c; printf("%c\n", *p); p = &g; printf("%c\n", *p); return 0; } a z xuất giá trị do p đang quản lý Con trỏ - Toán tử “*” 0x91A2 0x1132 p c 'a' 0x1132 p g 'z' 0x91A2 Con trỏ - Truyền tham số địa chỉ #include void change(int *v); int main() { int var = 5; change(&var); printf("main: var = %i\n", var); return 0; } void change(int *v) { (*v) *= 100; printf("change: *v = %i\n", (*v)); } Con trỏ NULL Giá trị đặc biệt để chỉ rằng con trỏ không quản lý vùng nào. Giá trị này thường được dùng để chỉ một con trỏ không hợp lệ. #include int main() { int i = 13; short *p = NULL; if (p == NULL) printf(“Con trỏ không hợp lệ!\n"); else printf(“Giá trị : %hi\n", *p); return 0; } | Con trỏ - Pointer Con trỏ – Pointer Khai báo Các toán tử “&”, “*”, “=”, “+” Nhắc lại về truyền tham số địa chỉ Con trỏ và mảng Cấp phát vùng nhớ động Con trỏ – Một số lý do nên sử dụng Con trỏ là kiểu dữ liệu lưu trữ địa chỉ của các vùng dữ liệu trong bộ nhớ máy tính Kiểu con trỏ cho phép: Truyền tham số kiểu địa chỉ Biểu diễn các kiểu, cấu trúc dữ liệu động Lưu trữ dữ liệu trong vùng nhớ heap Con trỏ đã được sử dụng trong hàm scanf Con trỏ – Khai báo trong C Kiểu con trỏ phải được định nghĩa trên một kiểu cơ sở đã được định nghĩa trước đó. typedef kiểucơsở *Tênkiểu; typedef int *PINT; //PINT là kiểu con trỏ - địa chỉ vùng nhớ kiểu int int x; PINT p; //p, p1: biến kiểu int * int *p1; int *pi; long int *p; float* pf; char c, d, *pc; /* c và d kiểu char pc là con trỏ đến char */ double* pd, e, f; /* pd là con trỏ đến double e and f are double */ char *start, *end; Con trỏ – Khai báo trong C 0x91A2 0x1132 Con trỏ - Toán tử “&” “&”: toán tử lấy địa chỉ của 1 biến Địa chỉ của tất cả các .
đang nạp các trang xem trước