07/05/2018, 15:01

Con trỏ trong C /C++

[] Con trỏ - Pointer trong ngôn ngữ C /C++ rất dễ học và thú vị. Một vài tác vụ trong ngôn ngữ C /C++ được thực hiện dễ dàng hơn nhờ con trỏ, và những tác vụ khác trở nên linh hoạt hơn, như trong việc cấp phát bộ nhớ, không thể thực hiện mà không dùng con trỏ. Do đó rất cần thiết ...

[] Con trỏ - Pointer trong ngôn ngữ C /C++ rất dễ học và thú vị. Một vài tác vụ trong ngôn ngữ C /C++ được thực hiện dễ dàng hơn nhờ con trỏ, và những tác vụ khác trở nên linh hoạt hơn, như trong việc cấp phát bộ nhớ, không thể thực hiện mà không dùng con trỏ. Do đó rất cần thiết phải nắm vững con trỏ khi trở thành một lập trình viên C /C++ hoàn thiện. Bây giờ hãy bắt đầu bằng những bước đơn giản nhất.

Như bạn biết, mỗi biến trong một vùng nhớ nhất định và mỗi vùng nhớ này có địa chỉ có nó được định nghĩa để dễ dàng trong việc truy cập sử dụng toán tử (&) tương ứng với địa chỉ của nó trong bộ nhớ. Xem xét ví dụ dưới đây, sẽ in ra địa chỉ của biến được định nghĩa:

#include <iostream>

using namespace std;

int main ()
{
   int  bien1;
   char bien2[10];

   cout << "Dia chi cua bien1 la: ";
   cout << &bien1 << endl;

   cout << "Dia chi cua bien2 la: ";
   cout << &bien2 << endl;

   return 0;
}

Chạy chương trình C /C++ trên sẽ cho kết quả như hình sau:

Con trỏ là gì?

Một con trỏ là một biến mà trong đó giá trị của nó là địa chỉ của biến khác. Ví dụ như địa chỉ của vùng nhớ. Giống như các biến và hằng số, bạn phải khai báo con trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất kì địa chỉ của biến nào. Dạng tổng quát của việc khai báo con trỏ như sau:

kieu_du_lieu *ten_bien;

Ở đây, kieu_du_lieu là kiểu dữ liệu cơ bản con trỏ, nó là kiểu hợp lệ trong ngôn ngữ C và ten_bien là tên giá trị của con trỏ. Phần ký tự * sử dụng trong khai báo con trỏ giống như việc bạn sử dụng cho phép nhân. Mặc dù vậy, trong khai báo này, ký tự * được thiết kế để sử dụng các biến của con trỏ. Dưới đây là một số cách khai báo hợp lệ của con trỏ:

int    *sv;    // tro toi mot gia tri nguyen
double *nv;    // tro toi mot gia tri double
float  *luong;    // tro toi mot gia tri float
char   *ten     // tro toi mot ky tu

Kiểu dữ liệu thực sự của giá trị của tất cả các con trỏ, có thể là integer, float, character, hoặc kiểu khác, là giống như, một số long hexa biểu diễn một địa chỉ bộ nhớ. Điểm khác nhau duy nhất của các con trỏ của các kiểu dữ liệu khác nhau là kiểu dữ liệu của biến hoặc hằng số mà con trỏ chỉ tới.

Cách sử dụng con trỏ trong C /C++

Có một vài phép toán quan trọng, sẽ giúp chúng ta làm việc với con trỏ một cách thường xuyên: a) chúng ta định nghĩa biến con trỏ, b) gán địa chỉ của biến đến một con trở và c) cuối cùng truy cập các giá trị biến địa chỉ trong biến con trỏ. Điều này được thực hiện bởi toán tử * trả về giá trị các các biến chứa trong địa chỉ được xác định bởi toán tử này. Dưới đây là các sử dụng những phép toán trên:

#include <iostream>

using namespace std;

int main ()
{
   int  bien1 = 15000;   // khai bao bien.
   int  *sv;        // bien con tro sv

   sv = &bien1;       // luu tru dia chi cua bien1 vao bien con tro sv

   cout << "Gia tri cua bien1 la: ";
   cout << bien1 << endl;

   // In dia chi duoc luu tru trong bien con tro sv
   cout << "Dia chi duoc luu tru trong bien con tro sv la: ";
   cout << sv << endl;

   // Truy cap gia tri co san tai dia chi cua bien con tro
   cout << "Gia tri cua *sv la: ";
   cout << *sv << endl;

   return 0;
}

Chạy chương trình C /C++ trên sẽ cho kết quả như hình sau:

Sử dụng

Chi tiết về con trỏ trong C /C++

Con trỏ có nhiều khái niệm nhưng cũng khá dễ để học và rất quan trọng trong lập trình ngôn ngữ C /C++. Dưới đây là những khái niệm quan trọng về con trỏ trong C /C++, được trình bày rõ ràng cho bạn, khi bạn click vào link tương ứng.

Khái niệm Miêu tả
C /C++ hỗ trợ con trỏ null, là một constant với giá trị là 0 được định nghĩa trong một số thư viện chuẩn
Có 4 toán tử đại số mà có thể được sử dụng trên các con trỏ là: ++, --, +, -
Có mối liên hệ gì giữa con trỏ và mảng. Bạn kiểm tra ngay.
Bạn có thể định nghĩa các mảng để giữ các con trỏ.
C /C++ cho phép bạn trỏ tới một con trỏ ...
Truyền một tham số bởi tham chiếu hoặc địa chỉ: cả hai cho các tham số được truyền khả năng có thể được thay đổi trong hàm gọi bởi hàm được gọi.
C /C++ cho phép một hàm trả về một con trỏ tới biến cục bộ, biến tĩnh và cũng như bộ nhớ được cấp phát động.

Mọi người cho thể tham gia khóa học thứ 6 của vietjackteam (đang tuyển sinh) vào đầu tháng 03/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : .Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Trong tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 150k cho khóa học, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại

Loạt bài hướng dẫn học lập trình C++ cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Bài học C++ phổ biến khác tại vietjack.com:

0