Hướng dẫn cấp phát con trỏ trong c
Con trỏ trong C là một khái niệm rất quen thuộc đối với các nhà lập trình viên. Tuy cơ bản nhưng lĩnh vực kiến thức mà con trỏ trong C++ liên quan là rất rộng. Người dùng cần nắm vững những thông tin quan trọng này để có thể sử dụng một cách nhuần nhuyễn con trỏ C. Bài viết sau sẽ đề cập đến khái niệm của con trỏ C, cách sử dụng và biểu diễn nó trong ngôn ngữ lập trình như thế nào. Hãy theo dõi ngay! Show Tìm hiểu địa chỉ ô nhớ trong CTrước khi tìm hiểu khái niệm con trỏ trong C, ta sẽ điểm qua một vài thông tin của địa chỉ biến nhớ trước. Đầu tiên ta sẽ nhìn qua ví dụ sau: int number; printf(“\nNhap number = “); scanf(“%d”, &number); printf(“\nnumber = %d”, number); Bạn có thể thấy rằng khi dùng hàm scanf, để truyền biến number ta cần dùng dấu &. Còn đối với hàm printf thì lại không cần. Lý do ở đây là gì? Câu trả lời là vì scanf cần giá trị của biến, vì thế dấu & sẽ giúp nó định vị được địa chỉ của biến đó. Mảng con trỏ C++Từ đó ta rút ra được kết luận: Mỗi biến đều được đính kèm địa chỉ của nó và giá trị nó đang lưu trữ. Để xác định được địa chỉ của biến, ta chỉ cần thêm dấu & đằng trước nó.\ \>>> Xem thêm : Nguyên lý SOLID là gì? Cách giải trình SOLID đơn giản nhất Ví dụ thực hành: Khi chạy đoạn mã sau: include int main() { int number = 5; printf(“Gia tri cua number = %d”, number); // truy xuất địa chỉ bằng cách thêm & trước tên biến printf(“\nDia chi cua number = %d”, &number); return 0; } Thì ta sẽ nhận được kết quả trả về là: Gia tri cua number = 5 Dia chi cua number = 6487580 Chú ý rằng kết quả ở mỗi máy có thể khác nhau do thông số không giống nhau. Nếu bạn muốn nhận địa chỉ là hexa như đầu bài, hãy thay thế %d bằng %x. Quay trở lại với khái niệm của con trỏ trong C. Con trỏ C cũng là một dạng biến có địa chỉ và giá trị đi kèm. Nhưng pointer (con trỏ C) là một biến đặc biệt, nó không lưu trữ những giá trị thông thường. Biến của con trỏ sẽ trỏ đến một địa chỉ của biến khác. Chính vì thế giá trị của nó ở trong dạng một địa chỉ. Vậy là trong con trỏ C sẽ lưu trữ 2 địa chỉ khác nhau: địa chỉ của con trỏ là vị trí của nó nhưng giá trị của nó lại là địa chỉ của biến mà nó đang trỏ tới. Ngoài ra, nhờ khả năng lưu trữ địa chỉ đặc biệt của con trỏ C, nó cho phép người dùng trỏ đến một điểm bất kỳ trong bộ nhớ. Nếu nắm chắc cách sử dụng pointer, bạn sẽ cảm thấy đây là một điểm mạnh tuyệt vời của nó. Nhưng nếu ngược lại, vì tình trạng trỏ lung tung của pointer, người dùng không thể xử lý sẽ cho đây là một điểm yếu phiền phức. \>>>Mời bạn tham khảo thêm: Các loại tính cách MBTI là gì – Con bạn thuộc nhóm nào? Những nội dung liên quan đến con trỏ C++Cách khai báo con trỏCách khai báo con trỏ C cũng giống như các biến bình thường khác, bao gồm kiểu dữ liệu và tên biến được ngăn cách ở giữa bới dấu *. Điều kiện là định danh tên biến phải hợp lệ. Cú pháp mẫu khi khai báo con trỏ như sau: hoặc hay Cả 3 kiểu khai báo như thế này đều đúng. Có nhiều kiểu dữ liệu khác nhau, có thể là void, int, float hay double… đều được. Tác dụng của dấu * là cho trình biên dịch biết đằng sau nó là một biến được khai báo dạng con trỏ. Dưới đây là một số ví dụ về cú pháp cụ thể của các loại khai báo trỏ biến khác nhau:
\>>> Xem thêm : Webhook là gì? Những lưu ý khi sử dụng Webhook cho người mới Gán địa chỉ vào con trỏ trong CBạn chỉ nên gán địa chỉ cho con trỏ sau khi đã khai báo nó thành công. Nếu chưa khai báo mà bạn đã gán giá trị thì con trỏ đó sẽ tương đương như một biến rác, có thể làm lỗi hệ thống khi khởi chạy. Phiền phức hơn, nếu con trỏ đó bị trỏ đến một biến quan trọng, nó sẽ làm đảo lộn toàn bộ phần mềm của bạn. Có 2 trường hợp để bạn gán địa chỉ cho con trỏ trong C:
int *p, value; value = 5; p = &value;
int value = 5; int *p = &value; Lưu ý rằng hoạt động khởi tạo và gán địa chỉ nên được thực hiện cùng nhau. Nếu con trỏ bạn định khởi tạo là dạng void, nó có thể được trỏ tới bất kỳ địa chỉ của bất kỳ biến hay kiểu dữ liệu nào. Nếu bạn đã khai báo con trỏ rồi nhưng vẫn chưa biết gắn vào địa chỉ nào thì hay trỏ nó đến NULL bằng cú pháp int *p = NULL. Khi đó con trỏ sẽ vô hại với giá trị bằng 0. Cấu tạo của con trỏ CMối quan hệ giữa con trỏ và mảng động trong C++Biến con trỏ và mảng động trong C++ có một mối liên hệ rất lớn. Trước hết ta sẽ đi nhanh về những định nghĩa cơ bản. Biến động còn được gọi là biến cấp phát động. Nó được hiểu như một kiểu dữ liệu dùng để định nghĩa. Nó không có tên mà cũng không được khai báo trong vùng biến. Biến động không được liên kết với bất kỳ biến nào. Để quản lý nó, người ta sẽ dùng con trỏ trong C++. \>>> Xem thêm : Gitignore File là gì? Đặc điểm và cách thức sử dụng ra sao? Vì biến động không có tên hay phần khai báo nên con trỏ sẽ quản lý các biến cấp phát động trong C++. Khi đó ta gọi nó là biến con trỏ. Để bắt đầu cấp phát vùng nhớ cho một vùng nhớ, ta sẽ thực hiện như sau: new Ví dụ thực tế: new int; new float; Khi cấp phát thành công, con trỏ sẽ tự động trỏ đến biến động. Vì biến động không có địa chỉ, ta phải gắn địa chỉ của nó lên con trỏ như sau: int *ptr = new int; Lúc này, con trỏ đã được trỏ tới biến động kiểu int. Ngoài ra, bạn cũng có thể khai báo là khởi tạo giá trị cùng lúc như sau: int *ptr1 = new int(2409); Nếu muốn xóa vùng nhớ của biến động, ta sẽ dùng toán tử delete. Cú pháp mẫu như sau: delete Ví dụ thực tế: delete ptr_a; Hướng dẫn sử dụng con trỏ\>>>Mời bạn tham khảo thêm: Kỹ sư cầu nối là gì? Tìm hiểu và giải đáp về Brse? Kết luậnQua bài viết trên, hẳn là bạn đọc đã biết thêm được rất nhiều thông tin hữu ích xoay xung quanh chủ đề về con trỏ trong C. Nhìn chung, con trỏ trong C có liên quan mật thiết đến rất nhiều lĩnh vực khác nhau tại cấp phát động trong C. Vì thế để thao tác thành thạo với ngôn ngữ lập trình C++, con trỏ là phần bạn phải hiểu rõ. Những khái niệm như địa chỉ ô nhớ hay cách khai báo, cách gán biến nhớ chỉ là những kiến thức cơ bản và đơn giản nhất. Phạm vi kiến thức mà con trỏ C mang đến còn rất nhiều, đòi khỏi người học phải biết tự tìm tòi và rèn luyện chăm chỉ. Mời bạn đọc tham khảo thêm: Hadoop là gì? Tuy nhiên bạn đừng nản chí bởi con trỏ C là phần không quá khó nếu được luyện tập nhiều lần. Đây cũng là phần mà bất kỳ lập trình viên nào cũng cần thông thạo. Vì thế bên cạnh những kiến thức mà Teky cung cấp, hãy chịu khó tìm đọc thêm nhiều tài liệu nâng cao hơn về con trỏ C nhé. Rất nhiều thông tin hữu ích được biên soạn lại bằng tiếng Việt, vì thế bạn cũng không cần lo lắng không tìm được tài liệu dễ hiểu. Chúc bạn đọc nhanh chóng làm chủ được phần kiến thức xung quanh con trỏ C++. Thông tin cơ bản về Học viện chuyên đào tạo công nghệ và lập trình – TekyTEKY là Học viện sáng tạo công nghệ với chương trình giảng dạy STEAM (Science – Technology – Engineering – Art – Mathematics) theo chuẩn Mỹ đầu tiên tại Việt Nam dành cho trẻ em từ 4 đến 18 tuổi. Được thành lập vào tháng 6 năm 2016, TEKY quyết tâm thực hiện sứ mệnh mang đến cho thế hệ trẻ Việt Nam kiến thức toàn diện về STEAM, đặc biệt là các tư duy công nghệ, khoa học máy tính và kỹ năng thế kỷ 21 – 4Cs (Critical Thinking: Tư duy phản biện – Communication: Giao tiếp – Creativity: Sáng tạo – Collaboration: Làm việc nhóm). |