STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

    Con Trỏ Mảng và Mảng Các Con Trỏ

    Phân biệt con trỏ đến mảng và mảng các con trỏ trong lập trình C/C++.
    25/07/2015
    04/09/2020
    2 phút đọc
    Con Trỏ Mảng và Mảng Các Con Trỏ

    Con trỏ đến mảng là 1 con trỏ quản lý một mảng, mảng con trỏ là mảng trong đó các phần tử là các con trỏ.

    Con trỏ đến mảng

    Đây là con trỏ quản lý vùng nhớ của mảng, cả mảng tĩnh và mảng động đều có con trỏ mảng.

    int staticArray[10];
    int *dynamicArray = new int[10];

    Như cách khai báo ở trên, staticArray là mảng được cấp phát tĩnh, còn dynamicArray là mảng được cấp phát động. staticArraydynamicArray cũng chính là tên của con trỏ quản lý vùng nhớ của các mảng. Địa chỉ mà hai con trỏ này lưu trữ chính là địa chỉ của phần tử đầu tiên trong mảng.

    Khi muốn sử dụng vùng nhớ của các phần tử khác trong mảng, ví dụ như phần tử thứ 6 ta có 2 cách sau:

    Cách thông thường:

    staticArray[5] = 15;

    Hoặc:

    *(staticArray + 5) = 15;

    Mảng các con trỏ

    Con trỏ cũng là một biến chứa giá trị, do đó giá trị này có thể được lưu trữ trong các phần tử của mảng. Mảng này được gọi là mảng con trỏ.

    Khai báo cấp phát động như sau:

    int **pointerArray = new int*[10];

    Có thể sử dụng mảng này như một mảng hai chiều, giả sử cần tạo một mảng 2 chiều có kích thước m x n:

    int m = 10, n = 5;
    int **pointerArray = new int*[m];
    
    for (int i = 0; i < m; i++)
    {
    	pointerArray[i] = new int[n];
    }

    Có thể sử dụng các phần tử của mảng như một mảng 2 chiều tĩnh thông thường:

    pointerArray[0][0] = 0;
    pointerArray[0][1] = 2;
    pointerArray[0][2] = 7;
    ...

    Khi không có nhu cầu sử dụng mảng này nữa, cần phải giải phóng vùng nhớ:

    for (int i = 0; i < m; i++)
    {
    	delete[] pointerArray[i];
    }
    delete[] pointerArray;
    
    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021