Con trỏ trong c/c++.
Con trỏ là gì? sao trong lập trình người ta lại sử dụng nó? nó dùng để làm gì?
Đây là những câu hỏi khi mà mình mới tiếp xúc với nó, vì chủ yếu là tự học nên kiến thức không vững do đó sai sót là không tránh khỏi, nhưng mình viết bài này để chia sẻ với các bạn newbie hoặc cao nhân nào có ghé thì chỉ giáo với.
Mình xin trích từ bài của dạy nhau học. https://cpp.daynhauhoc.com/8/10-phan-loai-cac-vung-nho-stack-va-heap/
Vùng nhớ ảo.
Tìm hiểu một tí về vùng nhớ heap và stack nha. Vùng nhớ này còn được gọi là vùng nhớ ảo Virtual memory và ta làm việc trên vùng nhớ này là chủ yếu vì kích thước nó khá lớn, trong khi bộ nhớ vật lý Physical memory thường có kích thước nhỏ và rất khó mà truy xuất trực tiếp.
Để truy xuất đến địa chỉ vật lý phải thông qua khối Memory Management Unit (MMU) và Virtual address space (có thể hiểu đơn giản là nó sẽ maping địa chỉ vật lý với địa chỉ ảo dựa vào bảng địa chỉ).
Heap : (free store segment) được sử dụng để cấp phát bộ nhớ thông qua kỹ thuật Dynamic memory allocation.
Stack: Dùng để cấp phát bộ nhớ cho tham số của các hàm (function parameters) và biến cục bộ (local variables).
Uninitialized data : (.bss) Dùng để lưu trữ các biến kiểu static, biến toàn cục (global variable) nhưng chưa được khởi tạo.
Initialized data: Dùng để khởi tạo giá trị cho các biến kiểu static, biến toàn cục (global variable) của các chương trình.
Text: Là nơi mà lưu trữ các mã lệnh đã được biên dịch của các chương trình máy tính.
Như mình đã giới thiệu vùng nhớ ảo có kích thước lớn, nhưng bạn không nên sử dụng nó một cách tùy tiện, đặc biệt khi bạn làm việc với các dòng vi điều khiển với nguồn tài nguyên hạn chế, bạn sẽ thấy được rõ vấn đề.
Trong trường hợp này bạn phải tìm cách tiết kiệm bộ nhớ và quản lý bộ nhớ một cách tối ưu, như để quản lý con người đó thì ít nhất bạn phải có địa chỉ của họ, ngày tháng năm sinh,…. Thì trong máy tính muốn quản lý một vùng nhớ thì bạn phải biết được địa chỉ của vùng nhớ đó (nhưng vui là khi tạo một con trỏ thì địa chỉ của biến con trỏ sẽ được ramdom).
Đấy từ đó con trỏ ra đời. ” Con trỏ được dùng để trỏ tới tới địa chỉ trên bộ nhớ nơi được dùng để lưu trữ giá trị của biến”.
Khởi động xong rồi! bài tiếp theo mình sẽ giải thích code.