Lập trình C - Chương 4: Lập trình con trỏ
Viết chương trình gồm các chức năng cơ bản xử lý mảng một chiều số nguyên dùng con trỏ
Viết chương trình gồm các chức năng cơ bản xử lý ma trận số nguyên dùng con trỏ
Dùng kỹ thuật con trỏ hàm, viết chương trình tính tổng, hiệu, tích và thương của hai phân số phụ thuộc vào người dùng chọn chức năng (+, -, * hay /) tương ứng
28 trang |
Chia sẻ: huyhoang44 | Lượt xem: 760 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Lập trình C - Chương 4: Lập trình con trỏ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lập trình CChương 4. Lập trình con trỏ(3 tiết)Trần Minh TháiEmail: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 10/03/20171Nội dungKhái niệmKhai báoCác phép toán trên con trỏCon trỏ và mảng một chiềuCon trỏ hàmBài tậpKHÁI NIỆM VÀ KHAI BÁO3Biến tĩnh và biến độngCác biến có thể khai báo bên trong hoặc bên ngoài hàmBiến khai báo ngoài hàm là biến toàn cục và có vị trí bộ nhớ cố địnhBiến khai báo trong khối lệnh {}/ trong hàm:Động nếu không dùng staticĐược cấp phát khi chương trình thực thi vào khốiBộ nhớ được giải phóng khi ra khỏi khốiĐịa chỉ của biếnThông tin của một biến bao gồm:Tên biếnKiểu dữ liệu của biếnGiá trị của biếnMỗ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ếnByte 1Byte 2Byte 3Byte 4Địa chỉ biến xCác ô nhớ của biến xByte 100Byte 101Byte 102Byte 103Địa chỉ biến aCác ô nhớ của biến aVí dụ khai báo: float x; int a;Địa chỉ của biếnĐịa chỉ của biến luôn luôn là một số nguyên (hệ hexa) cho dù biến đó chứa giá trị là số nguyên, số thực, ký tự, Cách lấy địa chỉ của biến: & tênbiếnĐịa chỉ của biếnint main(){ int x = 7; float y = 10.5; printf("x = %d tai dia chi: %x\n", x, &x); printf("y = %.2f tai dia chi: %x", y, &y); getch(); return 0;}Kết quảx = 7 tai dia chi: 61ff2cy = 10.50 tai dia chi: 61ff28Biến con trỏBiến con trỏ là một biến để chứa địa chỉ của ô chứa dữ liệu, có nhiều loại con trỏ tùy thuộc vào địa chỉ của mỗi loại kiểu biếnCú pháp Kiểu dữ liệu * tênConTrỏ;Ví dụ: Lấy giá trị của con trỏ *tênConTrỏ;int *px;float *pm;int main(){ int *px, y; float *pa, b; y = 10; b = 14.5; px = &y; pa = &b; printf("px: gia tri = %d, dia chi = %x\n", *px, px); printf("pa: gia tri = %.2f, dia chi = %x", *pa, pa); getch(); return 0;}Con trỏ - Ví dụLấy địa chỉ của biến y gán vào pxLấy giá trị của con trỏ pxKết quảpx: gia tri = 10, dia chi = 61ff24pa: gia tri = 14.50, dia chi = 61ff20SỬ DỤNG BIẾN CON TRỎ11Sử dụng biến con trỏCác bước khi sử dụng biến con trỏKhai báo biến con trỏCấp phát vùng nhớ cho biến con trỏSử dụng biến con trỏGiải phóng bộ nhớ của biến con trỏint main(){ int *px; printf("Nhap vao gia tri cho con tro px: "); scanf("%d", px); printf("Gia tri cua px = %d", *px); getch(); return 0;}Sử dụng biến con trỏ!!!Chưa cấp phát bộ nhớ trước khi sử dụngint main(){ int *px; px = (int *) calloc(1, sizeof(int)); printf("Nhap vao gia tri cho con tro px: "); scanf("%d", px); printf("Gia tri cua px = %d", *px); free(px); getch(); return 0;}Sử dụng biến con trỏCấp phát bộ nhớ cho pxCấp phát và giải phóng vùng nhớ - stdlib.hCách 1: dùng calloc //khai báo con trỏ p int *p; //cấp phát 100 ô nhớ mỗi ô kích thước int p=(int *) calloc (100, sizeof (int)); Cấp phát và giải phóng vùng nhớCách 2: dùng malloc //Khai báo con trỏ px int *px; //Cấp phát 100 ô nhớ kiểu int cho con trỏ px px = (int *) malloc (100);Sau khi sử dụng xong thì giải phóng vùng nhớ bằng hàm free free(p) ; // giải phóng vùng nhớ cho con trỏ pCON TRỎ VÀ MẢNG MỘT CHIỀU17Con trỏ và mảng một chiềuint a[7];int *px;px = a; //px trỏ tới phần tử tại vị trí 0px = px + 4; //px trỏ tới phần tử tại vị trí 4a[0]a[1]a[2]a[3]a[4]a[5]a[6] pxvoid NhapMang(int *a, int n){ for(int i=0; i(*Tên hàm)(tham số);VD: int *Tong(int a, int b);Thích hợp cho việc tùy chọn (switch) gọi thực hiện trong danh sách các hàmCon trỏ hàmint ChuVi(int a, int b){ return (a + b) * 2;}int DienTich(int a, int b){ return a*b;}int Tinh(int a, int b, int (*Ham)(int, int)){ int kq = (*Ham)(a, b); return kq;}Con trỏ hàmint main(){ int a = 10, b = 6; int (*Ham)(int, int) = ChuVi; int p = Tinh(a, b, Ham); printf("Chu vi cua hcn = %d", p); getch(); return 0;}Bài tậpViết chương trình gồm các chức năng cơ bản xử lý mảng một chiều số nguyên dùng con trỏViết chương trình gồm các chức năng cơ bản xử lý ma trận số nguyên dùng con trỏDùng kỹ thuật con trỏ hàm, viết chương trình tính tổng, hiệu, tích và thương của hai phân số phụ thuộc vào người dùng chọn chức năng (+, -, * hay /) tương ứngQ&A
Các file đính kèm theo tài liệu này:
- ky_thuat_lap_trinhchuong4_laptrinhcontro_081.pptx