NHẬP MÔN LẬP TRINH Cấu Trúc Cơ Bản

39 71 0
NHẬP MÔN LẬP TRINH Cấu Trúc Cơ Bản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thơng tin Bộ mơn Tin học sở NHẬP MƠN LẬP TRÌNH Đặng Bình Phương dbphuong@fit.hcmuns.edu.vn CON TRỎ (CƠ BẢN) && VC VC BB BB Nội dung Khái niệm cách sử dụng Các cách truyền đối số cho hàm Con trỏ mảng chiều Con trỏ cấu trúc NMLT - Con trỏ && VC VC BB BB Kiến trúc máy tính  Bộ nhớ máy tính  Bộ nhớ RAM chứa nhiều nhớ, nhớ có kích thước byte  RAM dùng để chứa phần hệ điều hành, lệnh chương trình, liệu…  Mỗi nhớ có địa địa đánh số từ trở  Ví dụ • RAM 512MB đánh địa từ đến 229 – • RAM 2GB đánh địa từ đến 231 – NMLT - Con trỏ && VC VC BB BB Khai báo biến C  Quy trình xử lý trình biên dịch  Dành riêng vùng nhớ với địa để lưu biến  Liên kết địa nhớ với tên biến  Khi gọi tên biến, truy xuất tự động đến ô nhớ liên kết với tên biến  Ví dụ: int a = 0x1234; // Giả sử địa 0x0B 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … 34 12 00 00 a … NMLT - Con trỏ && VC VC BB BB Khái niệm trỏ  Khái niệm  Địa biến số  Ta tạo biến khác để lưu địa biến  Con trỏ 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … 34 12 00 00 a 0B 00 00 00 pa … NMLT - Con trỏ && VC VC BB BB Khai báo trỏ  Khai báo  Giống biến khác, biến trỏ muốn sử dụng cần phải khai báo *;  Ví dụ char *ch1, *ch2; int *p1, p2;  ch1 ch2 biến trỏ, trỏ tới vùng nhớ kiểu char (1 byte)  p1 biến trỏ, trỏ tới vùng nhớ kiểu int (4 bytes) p2 biến kiểu int bình thường NMLT - Con trỏ && VC VC BB BB Khai báo trỏ  Sử dụng từ khóa typedef typedef *; ;  Ví dụ typedef int *pint; int *p1; pint p2, p3;  Lưu ý khai báo kiểu liệu  Giảm bối rối tiếp xúc với trỏ  Nhưng dễ nhầm lẫn với biến thường NMLT - Con trỏ && VC VC BB BB Con trỏ NULL  Khái niệm  Con trỏ NULL trỏ không trỏ đâu  Khác với trỏ chưa khởi tạo int int int int n; *p1 = &n; *p2; // unreferenced local varialbe *p3 = NULL; NULL NMLT - Con trỏ && VC VC BB BB Khởi tạo kiểu trỏ  Khởi tạo  Khi khai báo, biến trỏ đặt địa (khơng biết trước)  chứa giá trị không xác định  trỏ đến vùng nhớ trước  Đặt địa biến vào trỏ (toán tử &) = &;  Ví dụ int a, b; int *pa = &a, *pb; pb = &b; NMLT - Con trỏ && VC VC BB BB Sử dụng trỏ  Truy xuất đến ô nhớ mà trỏ trỏ đến  Con trỏ chứa số nguyên địa  Vùng nhớ mà trỏ đến, sử dụng tốn tử *  Ví dụ int a = 5, *pa printf(“%d\n”, printf(“%d\n”, printf(“%d\n”, = &a; pa); // Giá trị biến pa *pa); // Giá trị vùng nhớ pa trỏ đến &pa); // Địa biến pa 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … 05 00 00 00 a 0B 00 00 00 pa … NMLT - Con trỏ && VC VC BB BB Con trỏ mảng chiều  Truy xuất đến phần tử thứ n mảng (không sử dụng biến mảng)  array[n] == p[n] == *(p + n) * ( p + ) 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … int array[3]; … NMLT - Con trỏ && VC VC BB BB Con trỏ mảng chiều  Ví dụ nhập mảng void main() { int a[10], n = 10, *pa; pa = a; // pa = &a[0]; for (int i = 0; itu = 3; ps2->mau = 4; // ps1 = 3/4 NMLT - Con trỏ && VC VC BB BB Bài tập lý thuyết  Bài 1: Cho đoạn chương trình sau: float pay; float *ptr_pay; pay=2313.54; ptr_pay = &pay;  Hãy cho biết giá trị của: a pay b *ptr_pay c *pay d &pay Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập lý thuyết  Bài 2: Tìm lỗi #include #include void main() { int *x, y = 2; *x = y; *x += y++; printf("%d %d",*x,y); getch(); } Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập lý thuyết  Bài 1: Toán tử dùng để xác định địa biến?  Bài 2: Toán tử dùng để xác định giá trị biến trỏ trỏ đến?  Bài 3: Phép lấy giá trị gián tiếp gì?  Bài 4: Các phần tử mảng xếp nhớ nào?  Bài 5: Cho mảng chiều data Trình bày cách lấy địa phần tử mảng Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập lý thuyết  Bài 6: Nếu ta truyền cho hàm đối số mảng chiều Trình bày hai cách nhận biết phần tử cuối mảng?  Bài 7: Trình bày phép tốn thực trỏ?  Bài 8: Cho trỏ p1 trỏ đến phần tử thứ trỏ p2 trỏ đến phần tử thứ mảng int p2 – p1 = ?  Bài 9: Giống câu mảng float? Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập  Bài 10: Trình bày khai báo trỏ pchar trỏ đến kiểu char  Bài 11: Cho biến cost kiểu int Khai báo khởi tạo trỏ pcost trỏ đến biến  Bài 12: Gán giá trị 100 cho biến cost sử dụng hai cách trực tiếp gián tiếp  Bài 13: In giá trị trỏ giá trị biến mà trỏ tới  Bài 14: Sử dụng trỏ để làm lại tập mảng chiều Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập lý thuyết  Bài 15: Cho đoạn chương trình sau: int  *pint; float a; char c; double *pd; Hãy chọn phát biểu sai cú pháp: a a = *pint; b c = *pd; c *pint = *pd; d pd = a; Tin học sở - Đặng Bình Phương && VC VC BB BB Bài tập thực hành  Bài 16: Viết chương trình nhập số nguyên dương n gồm k chữ số (0 < k ≤ 5) , xếp chữ số n theo thứ tự tăng dần Ví dụ:  Nhập n = 1536  Kết sau xếp: 1356 Tin học sở - Đặng Bình Phương

Ngày đăng: 08/02/2020, 10:50

Mục lục

  • NHẬP MÔN LẬP TRÌNH

  • Nội dung

  • Kiến trúc máy tính

  • Khai báo biến trong C

  • Khái niệm con trỏ

  • Khai báo con trỏ

  • Slide 7

  • Con trỏ NULL

  • Khởi tạo kiểu con trỏ

  • Sử dụng con trỏ

  • Kích thước của con trỏ

  • Các cách truyền đối số

  • Truyền giá trị (tham trị)

  • Slide 14

  • Truyền địa chỉ (con trỏ)

  • Slide 16

  • Truyền tham chiếu (C++)

  • Một số lưu ý

  • Con trỏ và mảng một chiều

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan