Mảng và Con Trỏ trong C++: Hướng Dẫn Chi Tiết

Mảng trong C++

Mảng là tập hợp các phần tử cùng kiểu dữ liệu được lưu trữ liên tiếp trong bộ nhớ. Mảng được phân loại thành mảng một chiều, mảng hai chiều và mảng ký tự.

Mảng một chiều

Định nghĩa

Cú pháp:

kiểu_dữ_liệu tên_mảng[kích_thước];
  • Kích thước mảng phải là hằng số.
  • Ví dụ:
int arr[5]; // Mảng 5 số nguyên
char str[10]; // Mảng 10 ký tự

Khởi tạo

  • Khởi tạo toàn bộ:
int arr[4] = {1, 2, 3, 4};
  • Khởi tạo một phần:
int arr[5] = {1, 2}; // arr[2], arr[3], arr[4] = 0
  • Bỏ qua kích thước:
int arr[] = {1, 2, 3}; // Kích thước tự động xác định là 3

Truy cập phần tử

  • Chỉ số bắt đầu từ 0:
arr[0] = 10; // Gán giá trị cho phần tử đầu tiên
int x = arr[2]; // Lấy giá trị phần tử thứ 3

Ví dụ: Đảo ngược mảng

#include <iostream>
using namespace std;

int main() {
    int arr[5];
    for (int i = 0; i < 5; ++i) {
        cin >> arr[i];
    }
    for (int i = 4; i >= 0; --i) {
        cout << arr[i] << " ";
    }
    cout << endl;
    return 0;
}

Mảng hai chiều

Định nghĩa

Cú pháp:

kiểu_dữ_liệu tên_mảng[số_hàng][số_cột];
  • Ví dụ:
int matrix[3][4]; // Mảng 3 hàng 4 cột

Khởi tạo

  • Theo thứ tự:
int matrix[2][3] = {1, 2, 3, 4, 5, 6};
  • Theo nhóm:
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
  • Bỏ qua số hàng:
int matrix[][3] = {1, 2, 3, 4, 5, 6}; // Tự động xác định 2 hàng

Ví dụ: Nhập và xuất mảng hai chiều

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int matrix[2][3];
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cin >> matrix[i][j];
        }
    }
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << left << setw(5) << matrix[i][j];
        }
        cout << endl;
    }
    return 0;
}

Mảng ký tự và chuỗi

Định nghĩa

char str[10];
  • Khởi tạo:
char str[6] = "hello"; // Có '\0' ở cuối

Lớp string

  • Thư viện hỗ trợ xử lý chuỗi:
#include <string>
  • Ví dụ:
string s1 = "Hello";
string s2 = "World";
string s3 = s1 + " " + s2;

Con trỏ trong C++

Định nghĩa

Cú pháp:

kiểu_dữ_liệu *tên_con_trỏ;
  • Ví dụ:
int *p;
char *pc;

Gán giá trị

  • Lấy địa chỉ biến:
int a = 10;
int *p = &a;
  • Con trỏ trống:
int *p = NULL;

Toán tử * và &

  • *: Truy cập giá trị tại địa chỉ.
  • &: Lấy địa chỉ của biến.

Ví dụ: Sử dụng con trỏ

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int *p = &a;
    cout << "a = " << a << ", *p = " << *p << endl;
    *p = 10;
    cout << "a = " << a << ", *p = " << *p << endl;
    return 0;
}

Quan hệ giữa con trỏ và mảng

Con trỏ và mảng một chiều

  • Tên mảng là địa chỉ phần tử đầu tiên.
  • Ví dụ:
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for (int i = 0; i < 5; ++i) {
    cout << *(p + i) << " ";
}

Con trỏ và mảng hai chiều

  • Truy cập phần tử qua con trỏ:
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int *p = &matrix[0][0];
for (int i = 0; i < 2; ++i) {
    for (int j = 0; j < 3; ++j) {
        cout << *(*(matrix + i) + j) << " ";
    }
}

Thẻ: C++ mạng con trỏ string chuỗi

Đăng vào ngày 15 tháng 8 lúc 18:31