Xin chào mọi người!
Lâu rồi mình mới bắt đầu viết blog lại (chắc khoảng 2 – 3 ngày gì đó :P). Một phần vì hè mình khá lười, một phần vì mình đang quản lý 1 project nho nhỏ nên có thể viết hơi lâu :D. Không lan man nữa, hôm nay mình sẽ giới thiệu về Con trỏ trong C++
Chắc bạn nào khi học C trên trường hoặc sách vở, đều có nghe qua về Con trỏ kèm theo lời mời đầy tính “hăm doạ”, nào là con trỏ khó như trên trời, blah blah,.. Thú thật khi ngày đầu mình học về C/C++, mình cũng khá sợ khi nghe mấy tiền bối bảo Con trỏ rất khó, và đúng là như vậy. Thiết nghĩ 1 người giói về C/C++ thì 95 – 99% người đó phải thành thạo về Con trỏ. Vậy nên bài này mình sẽ giới thiệu 1 cách chi tiết nhất, dễ hiểu nhất có thể về nó 😀

1. Bản chất con trỏ

RAM là nơi lưu trữ biến, hằng, hàm,… của 1 chương trình khi chạy. Mọi chương trình muốn chạy được phải được nạp dữ liệu vào RAM. Cấu trúc của RAM gồm những ô 1 byte, với RAM 1GB ta có 230 ô nhớ 1 byte. Các bạn xem hình dưới đây:
Những dòng chữ màu đỏ là gì vậy? Đó chính là địa chỉ của ô nhớ. Trong bộ nhớ RAM, địa chỉ được đánh số từ 1 đến hết (230 nếu RAM 1GB), nhưng với 1 con số quá lớn nên người ta quy ước sử dụng hệ thập lục phân để ký hiệu các địa chỉ. Ví dụ ở ô đầu tiên có địa chỉ là 0x6D1E1, vậy nó nằm ở ô thứ 446945 (chuyển từ thập lục phân sang thập phân, dễ hiểu mà :D). Trong hệ điều hành Windows 32bit, RAM chỉ có vùng nhớ từ 0x00000000 đến 0x7FFFFFFF.
Nói luyên thuyên nãy giờ chắc các bạn cũng hiểu được đôi chút về RAM rồi nhỉ? Vậy con trỏ rốt cuộc là gì?
Nó chính là biến lưu những địa chỉ trên đấy 😛 (những số như 0x6D1E1 đấy). Đơn giản, dễ hiểu phải không 😀

2. Cú pháp khai báo

Cú pháp khai báo 1 con trỏ như sau:
<kiểu dữ liệu> *<tên con trỏ>;
Ví dụ:
Mã nguồn:
1
2
int* a;
int *b;
Lưu ý:
  • Con trỏ phân biệt với biến thường ở dấu * khi khai báo
  • Dấu * có thể đặt ở sau <kiểu dữ liệu>, hoặc trước <tên con trỏ> đều được. Điều đó làm một số bạn hiểu lầm như sau
    Mã nguồn:
    1
    2
    3
    int *a,b; // a là con trỏ, b là biến int
    int* a,b; // a vẫn là con trỏ, b cũng là biến int
    // Một số bạn nhầm lẫn cách khai báo dưới là khai báo 2 con trỏ
  • Con trỏ cũng có kiểu void.
Trên đây là phần 1 của bài viết về con trỏ. Nhớ đón đọc phần tiếp theo nhé! Cảm ơn các bạn đã theo dõi!
Đánh giá bài viết này để tác giả có động lực hơn nhé!
Axact

Administrator:

Xin chào, tôi là Nguyễn Quý Quang Huy. Tôi 14 tuổi và sinh sống tại Hoài Đức, Hà Nội. Tôi lập ra Rinne-IT Blog này nhằm chia sẻ những kiến thức mình có và những bài viết hay trên mạng do tôi tổng hợp. Blog đang trong giai đoạn phát triển nên nếu có lỗi mong các bạn bỏ qua. Tôi luôn chào đón những ý kiến phát triển từ từ các bạn. Giờ thì hãy khám phá blog của tôi nào ^_^

Bình Luận:

0 bình luận: