![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Bài giảng Kỹ thuật lập trình - Chương 2: Quản lý bộ nhớ (Trường Đại học Bách khoa Hà Nội)
Số trang: 32
Loại file: pdf
Dung lượng: 664.43 KB
Lượt xem: 14
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 Kỹ thuật lập trình - Chương 2: Quản lý bộ nhớ. Chương này cung cấp cho học viên những nội dung về: khái niệm biến, tên biến, vùng nhớ và giá trị biến; khái niệm con trỏ; các phép toán trên con trỏ; con trỏ và mảng;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 2: Quản lý bộ nhớ (Trường Đại học Bách khoa Hà Nội) Chương 2:Quản lý bộ nhớBiến: tên biến, vùng nhớ và giá trị biến• Mỗi biến trong C có tên và giá trị tương ứng. Khi một biến được khai báo, một vùng nhớ trong máy tính sẽ được cấp phát để lưu giá trị của biến. Kích thước vùng nhớ phu thuộc kiểu của biến, ví dụ 4 byte cho kiểu int int x = 10;• Khi lệnh này được thực hiện, trình biên dịch sẽ thiết lập để 4 byte vùng nhớ này lưu giá trị 10.• Phép toán & trả về địa chỉ của x, nghĩa là địa chỉ của ô nhớ đầu tiên trong vùng nhớ lưu trữ giá trị của x. 2Biến: tên biến, vùng nhớ và giá trị biến• Mỗi biến trong C có tên và giá trị tương ứng. Khi một biến được khai báo, một vùng nhớ trong máy tính sẽ được cấp phát để lưu giá trị của biến. Kích thước vùng nhớ phu thuộc kiểu của biến, ví dụ 4 byte cho kiểu int int x = 10;• Khi lệnh này được thực hiện, trình biên dịch sẽ thiết lập để 4 byte vùng nhớ này lưu giá trị 10.• Phép toán & trả về địa chỉ của x, nghĩa là địa chỉ của ô nhớ đầu tiên trong vùng nhớ lưu trữ giá trị của x. 3 Biến: tên biến, vùng nhớ và giá trị biếnTên biến xtham chiếu đến vị trí vùng 65329 Giá trị được lưu trongnhớ vùng nhớ 10Địa chỉ của vị trí vùng nhớ 65325 65324 • int x = 10; • x biểu diễn tên biến (e.g. an assigned name for a memory location ) • &x biểu diễn địa chỉ ô nhớ đầu tiền thuộc vùng nhớ của x, tức là 65325 • *(&x) or x biểu diễn giá trị được lưu trong vùng nhớ của x, tức là 10 4Chương trình ví dụ#includeint main() { int x = 10; printf(Value of x is %d ,x); printf(Address of x in Hex is %p ,&x); printf(Address of x in decimal is %lu ,&x); printf(Value at address of x is %d ,*(&x)); return 0;}Value of x is 10Address of x in Hex is 0061FF0CAddress of x in decimal is 6422284Value at address of x is 10 5Khái niệm con trỏ• Con trỏ là một biến chứa địa chỉ vùng nhớ của một biến khác.• Cú pháp chung khai báo biến con trỏ data_type* ptr_name;• Ký hiệu *’ thông báo cho trình biên dịch rằng ptr_name là một biến con trỏ và data_type chỉ định rằng con trỏ này sẽ trỏ tới địa chỉ vùng nhớ của một biến kiểu data_type. 6Tham chiếu ngược (dereference) biến con trỏ▪ Chúng ta có thể “tham chiếu ngược một con trỏ, nghĩa là lấy giá trị của biến mà con trỏ đang trỏ vào bằng cách dùng pháp toán ‘*’, chẳng hạn *ptr.▪ Do đó, *ptr có giá trị 10, vì 10 đang là giá trị của x. 7Ví dụ con trỏint x = 10;int *p = &x;Nếu con trỏ p giữ địa chỉ của biến a, ta nói p trỏ tới biếna*p biểu diễn giá trị lưu tại địa chỉ p*p được gọi là “tham chiếu ngược” của con trỏ p• Con trỏ được dùng để lấy địa chỉ của biến nó trỏ vào, đồng thời cũng có thể lấy giá trị của biến đó 8Con trỏint x = 10;int *ptr;ptr = &x; 65329 10 65325 Tên biến x 65324 65325 *ptr Tên biến con trỏ ptr 65320 9 Biến và con trỏ 65329Biến Con trỏint x = 10; 10 int *p; p được khai báo là con trỏ int&x biểu diễn địa chỉ của x 10 p = &a; p giữ giá trị địa chỉ a, i.e.65325x biểu diễn giá trị lưu tại địa *p biểu diễn giá trị lưu tại p, ie.10chỉ &x 65325 int b = *p; b có giá trị 10. 65324 *p = 20; a có giá trị 20. int *p; *p = 10; // this is not correct. 10Ví dụ con trỏ#includeint main() { int x = 10; int *ptr; ptr = &x; printf(Value of x is %d , x); printf(Address of x is %lu , (unsigned long int) &x); printf(Value of pointer ptr is %lu , (unsigned long int) ptr); printf(Address of pointer ptr is %lu , (unsigned long int) &ptr); printf(Ptr pointing value is %d ,*ptr); return 0; Value of x is 10} Address of x is 6422284 Value of pointer ptr is 6422284 Address of pointer ptr is 6422280 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 2: Quản lý bộ nhớ (Trường Đại học Bách khoa Hà Nội) Chương 2:Quản lý bộ nhớBiến: tên biến, vùng nhớ và giá trị biến• Mỗi biến trong C có tên và giá trị tương ứng. Khi một biến được khai báo, một vùng nhớ trong máy tính sẽ được cấp phát để lưu giá trị của biến. Kích thước vùng nhớ phu thuộc kiểu của biến, ví dụ 4 byte cho kiểu int int x = 10;• Khi lệnh này được thực hiện, trình biên dịch sẽ thiết lập để 4 byte vùng nhớ này lưu giá trị 10.• Phép toán & trả về địa chỉ của x, nghĩa là địa chỉ của ô nhớ đầu tiên trong vùng nhớ lưu trữ giá trị của x. 2Biến: tên biến, vùng nhớ và giá trị biến• Mỗi biến trong C có tên và giá trị tương ứng. Khi một biến được khai báo, một vùng nhớ trong máy tính sẽ được cấp phát để lưu giá trị của biến. Kích thước vùng nhớ phu thuộc kiểu của biến, ví dụ 4 byte cho kiểu int int x = 10;• Khi lệnh này được thực hiện, trình biên dịch sẽ thiết lập để 4 byte vùng nhớ này lưu giá trị 10.• Phép toán & trả về địa chỉ của x, nghĩa là địa chỉ của ô nhớ đầu tiên trong vùng nhớ lưu trữ giá trị của x. 3 Biến: tên biến, vùng nhớ và giá trị biếnTên biến xtham chiếu đến vị trí vùng 65329 Giá trị được lưu trongnhớ vùng nhớ 10Địa chỉ của vị trí vùng nhớ 65325 65324 • int x = 10; • x biểu diễn tên biến (e.g. an assigned name for a memory location ) • &x biểu diễn địa chỉ ô nhớ đầu tiền thuộc vùng nhớ của x, tức là 65325 • *(&x) or x biểu diễn giá trị được lưu trong vùng nhớ của x, tức là 10 4Chương trình ví dụ#includeint main() { int x = 10; printf(Value of x is %d ,x); printf(Address of x in Hex is %p ,&x); printf(Address of x in decimal is %lu ,&x); printf(Value at address of x is %d ,*(&x)); return 0;}Value of x is 10Address of x in Hex is 0061FF0CAddress of x in decimal is 6422284Value at address of x is 10 5Khái niệm con trỏ• Con trỏ là một biến chứa địa chỉ vùng nhớ của một biến khác.• Cú pháp chung khai báo biến con trỏ data_type* ptr_name;• Ký hiệu *’ thông báo cho trình biên dịch rằng ptr_name là một biến con trỏ và data_type chỉ định rằng con trỏ này sẽ trỏ tới địa chỉ vùng nhớ của một biến kiểu data_type. 6Tham chiếu ngược (dereference) biến con trỏ▪ Chúng ta có thể “tham chiếu ngược một con trỏ, nghĩa là lấy giá trị của biến mà con trỏ đang trỏ vào bằng cách dùng pháp toán ‘*’, chẳng hạn *ptr.▪ Do đó, *ptr có giá trị 10, vì 10 đang là giá trị của x. 7Ví dụ con trỏint x = 10;int *p = &x;Nếu con trỏ p giữ địa chỉ của biến a, ta nói p trỏ tới biếna*p biểu diễn giá trị lưu tại địa chỉ p*p được gọi là “tham chiếu ngược” của con trỏ p• Con trỏ được dùng để lấy địa chỉ của biến nó trỏ vào, đồng thời cũng có thể lấy giá trị của biến đó 8Con trỏint x = 10;int *ptr;ptr = &x; 65329 10 65325 Tên biến x 65324 65325 *ptr Tên biến con trỏ ptr 65320 9 Biến và con trỏ 65329Biến Con trỏint x = 10; 10 int *p; p được khai báo là con trỏ int&x biểu diễn địa chỉ của x 10 p = &a; p giữ giá trị địa chỉ a, i.e.65325x biểu diễn giá trị lưu tại địa *p biểu diễn giá trị lưu tại p, ie.10chỉ &x 65325 int b = *p; b có giá trị 10. 65324 *p = 20; a có giá trị 20. int *p; *p = 10; // this is not correct. 10Ví dụ con trỏ#includeint main() { int x = 10; int *ptr; ptr = &x; printf(Value of x is %d , x); printf(Address of x is %lu , (unsigned long int) &x); printf(Value of pointer ptr is %lu , (unsigned long int) ptr); printf(Address of pointer ptr is %lu , (unsigned long int) &ptr); printf(Ptr pointing value is %d ,*ptr); return 0; Value of x is 10} Address of x is 6422284 Value of pointer ptr is 6422284 Address of pointer ptr is 6422280 ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình Kỹ thuật lập trình Quản lý bộ nhớ Tham chiếu ngược biến con trỏ Con trỏ trỏ tới con trỏ Cấp phát bộ nhớ độngTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 281 0 0 -
Đề tài nguyên lý hệ điều hành: Nghiên cứu tìm hiểu về bộ nhớ ngoài trong hệ điều hành Linux
19 trang 257 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 224 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 207 0 0 -
Bài giảng Nguyên lý hệ điều hành (Bài giảng tuần 6) - Nguyễn Hải Châu
10 trang 182 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 178 0 0 -
Mẹo hay trong sử dụng máy tính: Phần 2
181 trang 175 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 156 0 0 -
Giáo trình Lý thuyết hệ điều hành: Phần 2 - Nguyễn Kim Tuấn
139 trang 125 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 122 0 0