VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C++ Cơ Bản

Ngôn ngữ lập trình C++ là gì? Lịch sử của C++ Các tính năng của C++ Cài đặt môi trường lập trình C++ Chương trình C++ đầu tiên Biến trong C++ Các kiểu dữ liệu trong C++ Ép kiểu trong C++ Từ khóa trong C++ Các toán tử trong C++ Comment trong C++ Các hằng số trong C++ count, cin và endl trong C++ Ký tự đặc biệt trong C++ Namespace trong C++ Template trong C++ Modifier trong C/C++

Câu Lệnh Điều Khiển C++

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

C++ Function

Hàm trong C++ Hàm do người dùng định nghĩa Các kiểu hàm trong C++ Đệ quy trong C++ Call by value Call by reference

C++ Array

Mảng (array) trong C++ Mảng 2 chiều trong C++ Truyền mảng vào hàm

C++ Poiter

Con trỏ trong C++ Con trỏ Null trong C++ Con trỏ số học trong C++ Con trỏ và mảng trong C++ Mảng con trỏ trong C++ Con trỏ tới con trỏ trong C++ Truyền con trỏ tới hàm trong C++ Trả về con trỏ từ hàm trong C++

C++ Lớp Object

Khái niệm lập trình hướng đối tượng trong C++ Lớp và đối tượng trong C++ Constructor trong C++ Destructor trong C++ this trong C++ static trong C++ struct trong C++ Enumeration trong C++ Hàm Friend trong C++ Hàm Math trong C++ Tính kế thừa trong C++ Tính đa hình trong C++ Tính trừu tượng trong C++ Tính đóng gói trong C++ Interface trong C++

Nạp Chồng Toán Tử

Nạp chồng toán tử và Nạp chồng hàm trong C++ Nạp chồng toán tử một ngôi trong C++ Nạp chồng toán tử nhị phân trong C++ Nạp chồng toán tử quan hệ trong C++ Nạp chồng toán tử Input/Output trong C++ Nạp chồng toán tử ++ và -- trong C++ Nạp chồng toán tử gán trong C++ Nạp chồng toán tử gọi hàm () trong C++ Nạp chồng toán tử subscript [] trong C++ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Lập Trình C++

Xử lý ngoại lệ trong C++ Đa luồng trong C++
Bài Tập C++ Có Lời Giải
1 / 3
❮ ❯

Con trỏ trong C++


Truyền mảng vào hàm trong C++
Con trỏ NULL trong C++

[Con trỏ - Pointer] Con trỏ trong C++ tuy khó học nhưng khá thú vị. Một vài tác vụ trong ngôn ngữ C++ được thực hiện dễ dàng và linh hoạt hơn nhờ con trỏ, 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 đó việc nắm vững con trỏ là cần thiết khi học C++ để trở thành lập trình viên cứng.

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;
}

Kết quả:

Dia chi cua bien1 la: 0x6ffe4c
Dia chi cua bien2 la: 0x6ffe40

Nội dung chính

  • Con trỏ là gì?
  • Cách sử dụng con trỏ trong C++
  • Chi tiết về con trỏ trong C++

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;

Trong đó, 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    *ip;    // trỏ tới một số int
double *dp;    // trỏ tới một số double
float  *fp;    // trỏ tới một số float
char   *ch     // trở tới một ký tự

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++

Con trỏ được sử dụng theo hai cách:

  • Dùng con trỏ để lưu địa chỉ của biến để thao tác.
  • Lấy giá trị của biến do con trỏ trỏ đến để thao tác.

Dùng con trỏ để lưu địa chỉ của biến

Bản thân con trỏ sẽ được trỏ vào địa chỉ của một biến có cùng kiểu dữ liệu với nó. Cú pháp của phép gán như sau:

<ten_con_tro> = &<ten_bien>;

Trong phép toán này, tên con trỏ không có dấu “*”. Ví dụ:

int x, *ip;
ip = &x;

con trỏ px có kiểu int trỏ vào địa chỉ của biến x có kiểu nguyên. Phép toán &<ten_bien> sẽ cho địa chỉ của biến tương ứng.

Lấy giá trị của biến do con trỏ trỏ đến

Phép lấy giá trị của biến do con trỏ trỏ đến được thực hiện bằng cách gọi tên:

*<ten_con_tro>;

Trong phép toán này, phải có dấu con trỏ “*”. Nếu không có dấu con trỏ, sẽ trở thành phép lấy địa chỉ của biến do con trỏ trỏ tới. Ví dụ:

int x = 12, y, *ip;
ip = &y;
*px = x;

Quá trình trên diễn ra như sau:

Sử dụng con trỏ trong C++

Dưới đây là cách sử dụng những phép toán trên:

#include <iostream>

using namespace std;

int main () {
   int  x = 20, y;    // khai bao bien binh thuong
   int  *ip;          // bien con tro
   
   ip = &y;
   *ip = x;           // dia chi luu tru cua bien con tro

   // in dia chi luu tru cua bien con tro ip
   cout << "Dia chi luu tru cua bien con tro ip: ";
   cout << ip << endl;

   // gia tri cua dia chi o nho cua con tro
   cout << "Gia tri cua bien *ip: ";
   cout << *ip << endl;
   
   // gia tri cua bien x
   cout << "Gia tri cua bien x: ";
   cout << x << endl;
   
   // gia tri cua bien y
   cout << "Gia tri cua bien y: ";
   cout << y << endl;

   return 0;
}

Kết quả:

Dia chi luu tru cua bien con tro ip: 0x6ffe3c
Gia tri cua bien *ip: 20
Gia tri cua bien x: 20
Gia tri cua bien y: 20

Phép gán giữa các con trỏ

Các con trỏ cùng kiểu có thể gán cho nhau thông qua phép gán và lấy địa chỉ con trỏ:

<ten_con_tro_1> = <ten_con_tro_2>

Trong phép gán giữa các con trỏ, bắt buộc phải dùng phép lấy địa chỉ của biến do con trỏ trỏ tới (không có dấu “*” trong tên con trỏ) mà không được dùng phép lấy giá trị của biến do con trỏ trỏ tới.

Hai con trỏ phải cùng kiểu. Trong trường hợp hai con trỏ khác kiểu, phải sử dụng các phương thức ép kiểu tương tự như trong phép gán các biến thông thường có kiểu khác nhau.

Ví dụ:

int x = 20, *px, *py;
px = &x;
py = px;

Quá trình diễn ra như sau:

Sử dụng con trỏ trong C++

con trỏ py cũng trỏ vào địa chỉ của biến x như con trỏ px. Khi đó *py cũng có giá trị 12 giống như *px và là giá trị của biến x.


Chi tiết về con trỏ trong 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++. 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 Mô tả

Con trỏ Null trong C++

Ngôn ngữ lập trình C++ hỗ trợ con trỏ null, là một hằng số với giá trị là 0 được định nghĩa trong một số thư viện chuẩn.

Con trỏ số học trong C++

Có 4 toán tử số học mà có thể được sử dụng trên các con trỏ là: ++, --, +, -

Con trỏ và mảng trong C++

Mối liên hệ giữa con trỏ và mảng trong C++.

Mảng con trỏ trong C++

Bạn có thể định nghĩa các mảng để lưu trữ các con trỏ.

Con trỏ tới con trỏ trong C++

Ngôn ngữ lập trình C++ cho phép bạn trỏ tới một con trỏ ...

Truyền con trỏ tới hàm trong C++

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.

Trả về con trỏ từ hàm trong C++

Ngôn ngữ lập trình C++ cho phép một hàm trả về một con trỏ tới biến địa phương (local), biến tĩnh và cũng như bộ nhớ được cấp phát động.

Truyền mảng vào hàm trong C++
Con trỏ NULL trong C++

Recent Updates

Đa luồng trong C++Xử lý ngoại lệ trong C++Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Nạp chồng toán tử subscript [] trong C++Nạp chồng toán tử gọi hàm () trong C++Nạp chồng toán tử gán trong C++Nạp chồng toán tử ++ và -- trong C++Nạp chồng toán tử Input/Output trong C++Nạp chồng toán tử quan hệ trong C++Nạp chồng toán tử nhị phân trong C++Nạp chồng toán tử một ngôi trong C++Nạp chồng toán tử và Nạp chồng hàm trong C++Sắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml