STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

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

    Tìm hiểu những kiến thức cơ bản về mảng dữ liệu và cách sử dụng mảng trong C++.

    Rye Nguyen

    29/07/2015
    06/09/2020
    4 phút đọc
    Sử Dụng Mảng Trong C++

    Giới thiệu

    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ể thiếu đối với mỗi lập trình viên. Bài viết này sẽ cung cấp cho những kiến thức cơ bản về mảng dữ liệu trong ngôn ngữ C++.

    Đặt vấn đề

    Khi cần lưu trữ một số lượng lớn các phần tử có cùng kiểu dữ liệu, chẳng hạn như cần lưu trữ 30 số nguyên được nhập từ bàn phím, có thể dùng 30 biến số nguyên riêng biệt để lưu trữ. Tuy nhiên, cách trên có một số nhược điểm như sau:

    • Có quá nhiều biến cần khởi tạo. Để nhớ được hết các biến này là không đơn giản, đồng thời gây khó khăn cho việc quản lý các biến.
    • Phải thực hiện thủ công các thao tác với biến đó. Do các biến là độc lập nên không thể sử dụng các cấu trúc lặp để thao tác với nó.
    • Chương trình sẽ dài và việc nâng cấp cũng trở nên khó khăn.

    Do đó, việc nhóm các phần tử đó lại với một cái tên duy nhất sẽ khắc phục được những nhược điểm trên. Các phần tử vẫn hoạt động độc lập, nhưng dưới một tên duy nhất, cùng với chỉ số (index) của nó để phân biệt với các phần tử khác.

    Khai báo và sử dụng mảng

    Cú pháp khai báo mảng như sau: <kiểu dữ liệu><tên mảng>[<số lượng phần tử>];

    Kiểu dữ liệu của mảng sẽ quy định kiểu dữ liệu của các phần tử có trong mảng. Tên mảng được đặt tên theo quy tắc đặt tên biến trong C/C++. Khi đó, hệ thống sẽ tìm một vùng nhớ liên tiếp phù hợp để cấp phát cho biến mảng. Lưu ý, số lượng phần tử phải là 1 HẰNG SỐ.

    Index phần tử đầu tiên là 0. Nên khai báo mảng n phần tử thì index của phần tử cuối cùng là n – 1. Điều này cũng đúng cho rất nhiều ngôn ngữ lập trình thông dụng hiện nay.

    Ngoài cách khai báo trên, C++ còn cho phép lập trình viên khai báo không tường minh, khai báo và khởi tạo giá trị ban đầu cho các phần tử.

    int main()
    {
    	int a[10];				// Explicity Declare
    
    	for(int i = 0; i < 10; i++)
    	{
    		scanf("%d", &a[i]);
    	}
    
    	for(int i = 0; i < 10; i++)
    	{
    		printf("%d ", a[i]);
    	}
    
    	printf("\n");
    
    	int b[10] = {7, 4, 1, 1};		// Declare and set value
    
    	for(int i = 0; i < 10; i++)
    	{
    		printf("%d ", *(b + i));	// Addition with pointer
    	}
    
    	printf("\n");
    
    	char str [] = "Welcome to STDIO";	//Implicity Declare
    	printf("%d", strlen(str));
    
    	return 0;
    }

    Mảng nhiều chiều

    Khi mỗi phần tử của mảng có kiểu dữ liệu là một mảng khác thì được mảng 2 chiều. Khi đó, ngoài index của các phần tử trong mảng, mỗi phần tử trong các phần tử đó cũng có index của nó. Do đó để truy xuất đến từng phần tử nhỏ, sử dụng cả 2 chỉ số index để chỉ ra vị trí của nó trong mảng 2 chiều.

    Xem ví dụ sau để nắm được cách khai báo và sử dụng mảng 2 chiều.

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	int a[3][3];
    	for(int i = 0; i < 3; i++)
    	{
    		for(int j = 0; j < 3; j++)
    		{
    			scanf("%d", &a[i][j]);
    		}
    	}
    	for(int i = 0; i < 3; i++)
    	{
    		for(int j = 0; j < 3; j++)
    		{
    			printf("%d ", a[i][j]);
    		}
    		printf("\n");
    	}
    
    	int b[3][3] = {{1, 3}, {2, 4, 6}};
    	for(int i = 0; i < 3; i++)
    	{
    		for(int j = 0; j < 3; j++)
    		{
    			printf("%d ", b[i][j]);
    		}
    		printf("\n");
    	}
    
    	return 0;
    }

    Truyền tham chiếu mảng vào hàm

    Khi cần chia nhỏ chương trình, cần đưa các đoạn công việc ra từng hàm riêng biệt. Khi các hàm cần thao tác với những mảng đã được khởi tạo, truyền mảng dữ liệu đó như một tham số đầu vào của hàm. Cách thao tác được trình bày trong ví dụ dưới đây:

    void Function1(int a[])	
    {
    	// Your code
    }
    
    void Function2(int a[][10])	//First index is not necessary
    {
    	// Your code
    }

    Đối với mảng động được cấp phát cho con trỏ, thao tác như sau:

    void Function3(int *&a, int n)
    {
    	// Your code
    }
    0
    Modern C++

    Modern C++

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

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

    Đề xuất

    Interface Trong C#
    Giới thiệu về interface trong C#, ý nghĩa sử dụng, tính ứng dụng và cách ...
    Hiện Thực và Sử Dụng Hàm strcmp - strcpy - strlen trong C/C++
    Hướng dẫn sử dụng hàm strlen để lấy độ dài chuỗi, hàm strcmp để so sánh ...
    21/08/2015

    Khám phá

    Hướng Dẫn Sử Dụng RapidJSON để Xử Lý JSON trong C++
    Khái niệm về định dạng JSON và cách sử dụng RapidJSON để thao tác với ...
    9 Tính Năng Quan Trọng Trong C++11
    C++11 là một phiên bản cải tiến và nâng cấp từ C++98 (hay các bạn vẫn ...
    13/08/2015
    Đọc Ghi File Cơ Bản Trong C#
    Hướng dẫn đọc và ghi file cơ bản sử dụng đối tượng File trong C#. Nhờ có ...
    Hiện Thực và Sử Dụng Hàm memcmp - memcpy - memset Trong C/C++
    Hướng dẫn hiện thực hàm memcpy, memcpy, memset và sử dụng các hàm trong ...
    21/08/2015
    Con Trỏ trong C++ - Pointer
    Tìm hiểu và hướng dẫn cách sử dụng con trỏ trong C/C++.
    28/07/2015
    STL - Vector Trong C++
    Hướng dẫn sử dụng STL vector container trong C++, các phương thức duyệt, ...
    Thao Tác với XML Sử Dụng TinyXML trong C++
    Hướng dẫn thao tác với XML sử dụng TinyXML trong C++.
    union Trong C/C++ Và Chia Sẻ Vùng Nhớ
    Giới thiệu union và các trường hợp sử dụng union mang lại hiệu năng tốt ...
    29/07/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
    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 - 2020