Bài giảng Tin học cơ sở 4 - Bài 8: Con trỏ
Số trang: 34
Loại file: pdf
Dung lượng: 1,019.46 KB
Lượt xem: 38
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Tin học cơ sở 4 - Bài 8: Con trỏ, cung cấp cho người học những kiến thức như: Con trỏ = địa chỉ biến; Tệp nhị phân; Dự án nhỏ: đọc tệp audio WAV. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Tin học cơ sở 4 - Bài 8: Con trỏ Tin học cơ sở 4 Buổi 8. Con trỏ Bộ môn Khoa học máy tính - 2017 Nội dung buổi học 1. Con trỏ = địa chỉ biến 2. Tệp nhị phân 3. Dự án nhỏ: đọc tệp audio WAV 2 Biến và bộ nhớ Khi khai báo biến Tên biến được gắn với một vùng nhớ chứa giá trị Khi sử dụng biến Máy tìm địa chỉ của biến trong bộ nhớ Đi tới địa chỉ đó và lấy giá trị của biến 3 Biến và bộ nhớ Toán tử & Lấy địa chỉ của biến cout Con trỏ Lập trình hiệu năng cao (high performance) Truyền địa chỉ biến (thay cho giá trị) Xử lý cấu trúc dữ liệu phức tạp Ví dụ: dữ liệu ở các vùng nhớ khác nhau Hàm không cần biết trước kiểu dữ liệu Chỉ cần biết địa chỉ của dữ liệu 5 Con trỏ Bản chất của biến con trỏ Giá trị là một số nguyên Là địa chỉ bộ nhớ Thường là địa chỉ của biến khác Có thể là địa chỉ của một biến con trỏ khác ptr x 12004 12000 12001 12002 12003 12004 12005 6 Con trỏ &x == ptr *ptr == x &(*ptr) == ptr *(&x) == x ptr x 12004 12000 12001 12002 12003 12004 12005 7 Khai báo con trỏ Cú pháp *; * = ; ptr x 12004 12000 12001 12002 12003 12004 12005 8 Khai báo con trỏ int x; int *ptr = &x; ptr trỏ đến x string line; string *pline = &line; ptr x 12004 12000 12001 12002 12003 12004 12005 9 Sử dụng con trỏ Đọc giá trị tại địa chỉ cout Truyền tham số bằng địa chỉ void squareValue(int x) { x = x * x; Không làm thay đổi } giá trị truyền vào hàm void squareByPtr(int *ptr) { *ptr = *ptr * *ptr; } Thay đổi giá trị do con trỏ chỉ tới int main() { int x = 5; squareValue(x); cout void swapByValue(int a, int b) { int tmp = a; Truyền tham số bằng địa chỉ a = b; b = tmp; Không làm thay đổi giá trị truyền vào hàm } void swapByPtr(int *a, int *b) { int tmp = *a; *a = *b; Thay đổi giá trị do *b = tmp; con trỏ chỉ tới } int main() { int x = 5, y = 6; swapByValue(x, y); ptr x cout Từ khóa const với con trỏ const int *ptr = &x; Không được sửa giá trị ptr trỏ đến (*ptr) int * const ptr = &x; Được sửa *ptr nhưng không được sửa ptr const int* const ptr = &x; Không được sửa cả *ptr và ptr 13 Con trỏ và mảng Tên mảng tĩnh là con trỏ đến phần tử đầu tiên của mảng string str[10]; string *p = str; cout Các phép toán trên con trỏ string str[10]; string *p = str; p++; // p str[1] p += 2; // p str[3] p--; // p str[2] cout Con trỏ đến con trỏ Khai báo int x; int *ptr = &x; int **pptr = &ptr; cout Tệp nhị phân Là tệp KHÔNG phải tệp văn bản Nội dung là một chuỗi byte (8 bit) Công dụng: Chứa ảnh, video âm thanh, dữ liệu nén Lưu nội dung một vùng bộ nhớ … hoặc bất kì nội dung nào Xem/sửa nội dung: Hex Editors (Frhed) 17 Lưu bộ nhớ xuống tệp nhị phân Hàm write của ofstream ostream& write (const char* s, streamsize n); s: địa chỉ bộ nhớ cần lưu n: kích thước (tính bằng byte) 18 Lưu bộ nhớ xuống tệp nhị phân int num[100]; ofstream outFile('number.bin', ios::binary); outFile.write( (char*) num, 100*sizeof(int) ); Chuyển kiểu con trỏ Tổng số byte của int* sang char* vùng nhớ cần lưu 19 Đọc tệp nhị phân lên bộ nhớ Hàm read của ifstream istream& read(char* s, streamsize n); s: địa chỉ bộ nhớ để chứa dữ liệu n: kích thước (tính bằng byte) Số byte thực sự đọc được – hàm gcount() 20
Nội dung trích xuất từ tài liệu:
Bài giảng Tin học cơ sở 4 - Bài 8: Con trỏ Tin học cơ sở 4 Buổi 8. Con trỏ Bộ môn Khoa học máy tính - 2017 Nội dung buổi học 1. Con trỏ = địa chỉ biến 2. Tệp nhị phân 3. Dự án nhỏ: đọc tệp audio WAV 2 Biến và bộ nhớ Khi khai báo biến Tên biến được gắn với một vùng nhớ chứa giá trị Khi sử dụng biến Máy tìm địa chỉ của biến trong bộ nhớ Đi tới địa chỉ đó và lấy giá trị của biến 3 Biến và bộ nhớ Toán tử & Lấy địa chỉ của biến cout Con trỏ Lập trình hiệu năng cao (high performance) Truyền địa chỉ biến (thay cho giá trị) Xử lý cấu trúc dữ liệu phức tạp Ví dụ: dữ liệu ở các vùng nhớ khác nhau Hàm không cần biết trước kiểu dữ liệu Chỉ cần biết địa chỉ của dữ liệu 5 Con trỏ Bản chất của biến con trỏ Giá trị là một số nguyên Là địa chỉ bộ nhớ Thường là địa chỉ của biến khác Có thể là địa chỉ của một biến con trỏ khác ptr x 12004 12000 12001 12002 12003 12004 12005 6 Con trỏ &x == ptr *ptr == x &(*ptr) == ptr *(&x) == x ptr x 12004 12000 12001 12002 12003 12004 12005 7 Khai báo con trỏ Cú pháp *; * = ; ptr x 12004 12000 12001 12002 12003 12004 12005 8 Khai báo con trỏ int x; int *ptr = &x; ptr trỏ đến x string line; string *pline = &line; ptr x 12004 12000 12001 12002 12003 12004 12005 9 Sử dụng con trỏ Đọc giá trị tại địa chỉ cout Truyền tham số bằng địa chỉ void squareValue(int x) { x = x * x; Không làm thay đổi } giá trị truyền vào hàm void squareByPtr(int *ptr) { *ptr = *ptr * *ptr; } Thay đổi giá trị do con trỏ chỉ tới int main() { int x = 5; squareValue(x); cout void swapByValue(int a, int b) { int tmp = a; Truyền tham số bằng địa chỉ a = b; b = tmp; Không làm thay đổi giá trị truyền vào hàm } void swapByPtr(int *a, int *b) { int tmp = *a; *a = *b; Thay đổi giá trị do *b = tmp; con trỏ chỉ tới } int main() { int x = 5, y = 6; swapByValue(x, y); ptr x cout Từ khóa const với con trỏ const int *ptr = &x; Không được sửa giá trị ptr trỏ đến (*ptr) int * const ptr = &x; Được sửa *ptr nhưng không được sửa ptr const int* const ptr = &x; Không được sửa cả *ptr và ptr 13 Con trỏ và mảng Tên mảng tĩnh là con trỏ đến phần tử đầu tiên của mảng string str[10]; string *p = str; cout Các phép toán trên con trỏ string str[10]; string *p = str; p++; // p str[1] p += 2; // p str[3] p--; // p str[2] cout Con trỏ đến con trỏ Khai báo int x; int *ptr = &x; int **pptr = &ptr; cout Tệp nhị phân Là tệp KHÔNG phải tệp văn bản Nội dung là một chuỗi byte (8 bit) Công dụng: Chứa ảnh, video âm thanh, dữ liệu nén Lưu nội dung một vùng bộ nhớ … hoặc bất kì nội dung nào Xem/sửa nội dung: Hex Editors (Frhed) 17 Lưu bộ nhớ xuống tệp nhị phân Hàm write của ofstream ostream& write (const char* s, streamsize n); s: địa chỉ bộ nhớ cần lưu n: kích thước (tính bằng byte) 18 Lưu bộ nhớ xuống tệp nhị phân int num[100]; ofstream outFile('number.bin', ios::binary); outFile.write( (char*) num, 100*sizeof(int) ); Chuyển kiểu con trỏ Tổng số byte của int* sang char* vùng nhớ cần lưu 19 Đọc tệp nhị phân lên bộ nhớ Hàm read của ifstream istream& read(char* s, streamsize n); s: địa chỉ bộ nhớ để chứa dữ liệu n: kích thước (tính bằng byte) Số byte thực sự đọc được – hàm gcount() 20
Tìm kiếm theo từ khóa liên quan:
Khoa học máy tính Bài giảng Tin học cơ sở 4 Tin học cơ sở 4 Con trỏ Tệp nhị phân Khai báo biến Lập trình hiệu năng cao Xử lý cấu trúc dữ liệu Khai báo con trỏGợi ý tài liệu liên quan:
-
Tóm tắt Đồ án tốt nghiệp Khoa học máy tính: Xây dựng ứng dụng quản lý quán cà phê
15 trang 475 1 0 -
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 378 6 0 -
32 trang 230 0 0
-
Đồ án nghiên cứu khoa học: Ứng dụng công nghệ cảm biến IoT vào mô hình thủy canh
30 trang 201 0 0 -
6 trang 173 0 0
-
Giáo trình Lập trình C căn bản: Phần 2
71 trang 172 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 161 0 0 -
76 trang 157 2 0
-
3 trang 143 2 0
-
Sửa chữa và lắp ráp máy tính tại nhà
276 trang 103 0 0