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

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