Danh mục

Bài giảng Kỹ thuật lập trình: Bài 4 - TS. Đào Trung Kiên

Số trang: 17      Loại file: pdf      Dung lượng: 730.90 KB      Lượt xem: 11      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Kỹ thuật lập trình: Bài 4 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Thay đổi địa chỉ trỏ tới, các phép toán với con trỏ, con trỏ và mảng, kiểu chuỗi ký tự, xử lý dòng lệnh, cấp phát bộ nhớ động
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình: Bài 4 - TS. Đào Trung KiênBài 4: Con trỏ, mảngvà quản lý bộ nhớ1EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiCon trỏBiến con trỏ là biến có chứa địa chỉ của một vùng trongbộ nhớ và có kiểu xác địnhKích thước của con trỏ tương đương của int, tuy nhiênkích thước của vùng nhớ được trỏ tới là không xác định(con trỏ không chứa thông tin về kích thước)Khai báo bằng cách thêm dấu * ở trước tên biến:int *pInt;char *pChar;struct SinhVien *pSV;int*int10Truy xuất giá trị thông qua con trỏ dùng toán tử *:2int aInt = *pInt; (*pInt được hiểu là biến int mà pInt trỏ tới)*pChar = A;printf(Gia tri: %d, *pInt);EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiThay đổi địa chỉ trỏ tớiVì giá trị của con trỏ là địa chỉ, nên khi thay đổi giá trị đó,biến con trỏ sẽ trỏ tới một vùng nhớ khácGán địa chỉ mới cho con trỏ bằng phép gán như thôngthườngint *pInt2;pInt2 = pInt;Toán tử địa chỉ &: tạo ra một con trỏ bằng việc lấy địa chỉpAacủa một biến3int a;int* pA = &a;10/* pA trỏ tới a */& là toán tử ngược với *, với một biến a bất kỳ thì *&a tươngđương với a, và nếu p là một con trỏ thì &*p cũng tương đươngvới pEE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiMinh hoạchar c = A;int *pInt;short s = 50;int a = 10;Địa chỉ các biến trong bộ nhớ theothứ tự tăng dần ở đây chỉ có tínhchất minh hoạ. Trong thực tế,stack được cấp phát từ cao xuốngthấp  biến khai báo sau sẽ cóđịa chỉ nhỏ hơn.pInt = &a;*pInt = 100;Địa chỉ1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511Biếnchar cint* pIntshort sint a…A150750100…Giá trịpInt:*pInt:&a:a:415071001507100EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiCon trỏ void*Là con trỏ nhưng không mang thông tin về kiểuCó thể được chuyển kiểu ngầm định sang bất kỳ kiểu con trỏ nàokhác, và ngược lại (nhưng trong C++ thì không)void* pVoid;int *pInt;char *pChar;pInt = pVoid;pChar = pVoid;/* OK *//* OK */pVoid = pInt;pVoid = pChar;/* OK *//* OK */pChar = pInt;pChar = (char*)pInt;/* lỗi *//* OK */Không dùng toán tử * được với con trỏ void**pVoid/* lỗi */Con trỏ void* được dùng để làm việc với bộ nhớ thuần tuý hoặc đểthao tác với những biến chưa xác định kiểu5memcpy(void* dest, const void* src, int size);EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

Tài liệu được xem nhiều: