STDIO
Tìm kiếm gần đây

    Nội dung

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

    25/07/2015
    30/04/2017
    Con trỏ mảng và mảng các con trỏ là hai khái niệm quan trọng trong C++

    Giới thiệu

    Con trỏ mảng con trỏ quản lý một mảng, còn mảng con trỏ là mảng trong đó các phần tử là các con trỏ. Phân biệt và sử dụng hai khái niệm này sẽ giúp cho lập trình viên hiểu được vấn đề tốt hơn, từ đó giải quyết bài toán của mình dễ dàng hơn.

    Tiền đề bài viết

    Bài viết nằm trong loạt bài viết trong chương Con trỏ của chương trình LẬP TRÌNH C++.

    Đối tượng hướng đến

    Các lập trình viên C++ đang tìm hiểu về con trỏ, có kiến thức về con trỏ và cấp phát động.

    Con trỏ 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 Static_Array[10];
    int *Dynamic_Array = new int[10];

    Như cách khai báo ở trên, thì Static_Array là mảng tĩnh, còn Dynamic_Array là mảng động. Static_Array và Dynamic_Array 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:

    Static_Array[5]  = 15;

    Hoặc:

    *(Static_Array + 5) = 15;

    Mảng các con trỏ

    Con trỏ cũng là một biến, do đó nó có thể được lưu trữ trong các 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 **Pointer_Array = new int*[10];

    Chúng ta có thể sử dụng mảng này như một mảng hai chiều, để làm được điều đó, chúng ta làm như sau, giả sử chúng ta 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 **Pointer_Array = new int*[m];
    
    for (int i = 0; i < m; i++)
    {
    	Pointer_Array[i] = new int[n];
    }

    Chúng ta 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:

    Pointer_Array[0][0] = 0;
    Pointer_Array[0][1] = 2;
    Pointer_Array[0][2] = 7;
    ……

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

    for (int i = 0; i < m; i++)
    {
    	delete[] Pointer_Array[i];
    }
    delete[] Pointer_Array;
    

    Bài viết liên quan

    Loop - For Và Foreach - While Và Do-While

    Trong bài viết này tôi muốn giới thiệu đến các bạn cách tạo vòng lặp và các cách sử dụng vòng lặp khác nhau được hỗ trợ trong ngôn ngữ PHP. Bài viết các bạn lập trình ...

    Bùi Nguyễn Minh Hoàng28/08/2015

    Sử Dụng Mảng Trong C++

    Mảng dữ liệu là một tập hợp các phần tử có cùng kiểu dữ liệu và được truy cập thông qua index. Việc vận dụng mảng dữ liệu trong việc học tập và làm việc là điều không thể ...

    Rye Nguyen29/07/2015

    Con Trỏ Hàm Trong C/C++

    Tương tự Windows Form, trong những game được lập trình bằng C++ cũng có những Button, và để tạo ra chúng thì không đơn giản. Vì ngoài việc xử lý hình ảnh, ...

    Tuấn Trần18/08/2015

    Cơ Bản Về Mã Hóa

    Giả sử con người chưa biết đến mã hóa, một hacker chỉ cần làm một thiết bị lắng nghe và chuyển đổi các gói packet được truyền đi trong mạng và gắng thiết bị này vào cáp ...

    Hoàng Tiến Đạt03/12/2014

    IC 74HC595N

    Một chiếc Arduino UNO vốn có khá ít chân, và sẽ bị hạn chế nếu ta làm việc với 2 đèn led matrix 8x8. Số chân sẽ là (8 + 8) x 2 = 32 chân, vậy để làm được việc đó ta sẽ sử ...

    Bùi Nguyễn Minh Hoàng02/09/2015

    Box2D - Phần 1: Giới Thiệu Và Một Số Thuật Ngữ Và Khái Niệm

    Giới thiệu về engine vật lý sử dụng trong games là Box2D. Giới thiệu Box2D, các khái niệm, cách thành phần liên quan, cách khởi tạo và thao tác với một số thành phần ...

    Trương Xuân Đạt23/01/2015

    Điện Trở - Resistor

    Điện trở (resistor) là một thiết bị cơ bản nhất trong một mạch điện. Qua bài viết này, tôi sẽ giới thiệu với các bạn về thiết bị này một cách đơn giản và dễ hiểu nhất. ...

    Vo Jacob15/09/2015

    Các Thao Tác Kinh Điển Với Mảng 2 Chiều Và Ứng Dụng

    Với bài viết "Mảng 1 Chiều – Mảng 2 Chiều" như tôi đã giới thiệu, nhằm giúp các bạn tiếp cận và hiểu hơn về mảng, tôi đưa ra ý tưởng và giúp các bạn xây dựng ứng dụng ...

    Bùi Thị Mỹ Tiên23/05/2017

    Chipmunk - Phần 2: Một Số Thuật Ngữ Và Khái Niệm

    Tiếp tục loạt bài viết giới thiệu thư viện vật lý trò chơi Chipmunk. Tìm hiểu về một số khái niệm và thuật ngữ trong Chipmunk, cách di chuyển các bodies, va ...

    Trương Xuân Đạt23/01/2015

    Phân Biệt Tham Chiếu Và Con Trỏ Trong C++

    Một trong những nỗi đau nhức nhói khá lớn cho những người mới bắt đầu với C++ đó là khó phân biệt được khái niệm tham chiếu và con trỏ. Trong bài viết này, tôi sẽ diễn ...

    La Kiến Vinh17/09/2014

    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
    [email protected]

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