Mảng (array) trong C (phần 3)

Trong bài học C++ về mảng (array) trong C++ (phần 1 và 2) Taimienphi.vn đã giới thiệu cho bạn về khởi tạo mảng và khai báo mảng trong C++ là gì. Trong bài C++ hôm nay, Taimienphi.vn sẽ giới thiệu tiếp cho bạn về con trỏ tới mảng trong C++.

Để tìm hiểu chi tiết về truyền toàn bộ mảng trong hàm và vòng lặp For - each trong C++ là gì, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn.

mang array trong c phan 3

Mục Lục bài viết:
1. Truyền toàn bộ mảng trong hàm
2. Vòng lặp For, each

 

1. Truyền toàn bộ mảng trong hàm

Trong C++, chúng ta có thể truyền một phần tử của mảng hoặc toàn bộ mảng để làm đối số cho hàm.

- Trước hết là truyền một phần tử của mảng cho một hàm:

#include
void display(int a)
{
std::cout < a=""><>
}
int main(){
int n[ ] = { 20, 30, 23, 4, 5, 2, 41, 8 };
display(n[2]);
trả về 0;
}

Kết quả đầu ra có dạng: 23.

- Truyền toàn bộ mảng cho hàm:

Ngoài ra chúng ta cũng có thể truyền toàn bộ mảng cho hàm bằng cách trueyefn tên mảng làm đối số. Tức là chúng ta sẽ truyền địa chỉ của mảng, là địa chỉ của phần tử đầu tiên của mảng. Bằng cách trỏ phần tử đầu tiên, chúng ta có thể lấy toàn bộ mảng.

Để dễ hình dung, bạn đọc cùng tham khảo ví dụ dưới đây:

#include
float trùng bình (float a[])
{
int i;
float avg, sum=0;
for(i=0;i<>
{
sum+= a[i];
}
avg = sum/8;
trả về avg;
}
int main(){
float b, n[ ] = { 20.6, 30.8, 5.1, 67.2, 23, 2.9, 4, 8 };
b = trung bình(n);
std:: cout < "trung="" bình="" các="" số=" << b << std::endl;
trả về 0;
}

Kết quả trả về có dạng:

Trung bình các số = 20.2

Trung bình(float a[]): là hàm lấy mảng float. Phần còn lại của phần thân hàm được thực thi.

b = trung bình(n): n được truyền. Như đã đề cập trước đó, n là con trỏ tới phần tử đầu tiên hoặc con trỏ tới mảng n []. Vì vậy, chúng ta truyền qua con trỏ.

Trong ví dụ trên chúng ta tính trung bình các giá trị của các phần tử trong một mảng, trong đó kích thước của mảng đã biết, là 8.

Giả sử chúng ta lấy kích thước của mảng từ người dùng. Trong trường hợp đó, kích thước của mảng không cố định. Ở đây, chúng ta cần truyền kích thước của mảng làm đối số thứ hai cho hàm.

#include
float trung bình(float a[],int size)
{
int i;
float avg, sum=0;
for(i=0;i
{
sum+= a[i];
}
avg = sum/size;
trả về avg;
}
int main(){
sử dụng namespace std;
int size,j;
cout << " nhập="" kích="" thước="" của="" mảng"=""><>
cin >> size;
float b, n[size];
for(j=0; j
{
cout < "giá="" trị="" của="" n["="">< j="">< "]="" :="" "=""><>
cin >> n[j];
}
b = trung bình (n, size);
cout < "trung="" bình="" các="" số=" << b << endl;
trả về 0;
}
Đầu ra:
Nhập kích thước của mảng
4
Giá trị của n[0] :
47
Giá trị của n[1] :
74
Giá trị của n[2] :
45
Giá trị của n[3] :
56
Trung bình các số = 55.5

Đoạn mã trên tương tự như các đoạn mã trong các ví dụ trước, chỉ khác chúng ta đã truyền kích thước của mảng theo kiểu tường mình - float trung bình (float a [], int size).

Hoặc ngoài ra chúng ta cũng có thể truyền mảng cho một hàm bằng cách sử dụng con trỏ. Cùng tham khảo ví dụ dưới đây:

#include
Sử dụng namespace std;
void display(int *p)
{
int i;
for(i=0;i<8;++i)
{
cout << " n["="">< i="">< "]=" << *p << endl;
p++;
}
}
int main(){
int size,j;
int n[ ] = { 1, 2, 3, 4, 5, 6, 7, 8 };
display(n);
trả về 0;
}
Đầu ra có dạng:
n[0] = 1
n[1] = 2
n[2] = 3
n[3] = 4
n[4] = 5
n[5] = 6
n[6] = 7
n[7] = 8

Trong ví dụ trên, địa chỉ của mảng, tức là địa chỉ của n[0] được truyền cho các tham số chính của hàm.

- void display(int *p): tức là hàm display đang lấy con trỏ của một số nguyên và không trả về bất kỳ giá trị nào.

Bây giờ chúng ta truyền con trỏ cho một số nguyên, tức là con trỏ của mảng n[], trong đó n là theo yêu cầu của hàm display.

Vì p là địa chỉ của mảng n[] trong hàm display, tức là địa chỉ của phần tử đầu tiên của mảng (n[0]), vì vậy *p tương ứng cho giá trị của n[0]. Trong vòng lặp for trong hàm, p++ tăng giá trị của p lên 1. Vì vậy, khi i = 0, giá trị của *p được in. Sau đó p++ tăng *p lên *(p + 1), vì vậy trong vòng lặp thứ hai, giá trị của *(p + 1) tức là n[1] được in. Vòng lặp này tiếp tục cho đến khi i = 7 khi giá trị của *(p + 7) tức là n[7] được in.

2. Vòng lặp For,  each

Dạng vòng lặp for mới giúp việc lặp các mảng dễ dàng hơn, được gọi là vòng lặp for - each. Vòng lặp này được sử dụng để lặp qua một mảng.

Dưới đây là ví dụ về vòng lặp for - each:

#include
int main()
{
Sử dụng namespace std;
int ar[] = { 1,2,3,4,5,6,7,8,9,10 };
for (int m : ar)
{
cout < m=""><>
}
Trả về 0;
}
Kết quả trả về:
1
2
3
4
5
6
7
8
9
10

Ở đây biến m sẽ truy cập mọi phần tử của mảng ar và lấy giá trị của nó. Vì vậy, trong lần lặp đầu tiên, m là phần tử đầu tiên của mảng ar, tức là 1. Trong lần lặp thứ hai, m là phần tử thứ 2, tức là 2, ... . Chỉ cần tập trung vào cú pháp của vòng lặp này, phần còn lại rất dễ dàng.

https://thuthuat.taimienphi.vn/mang-array-trong-c-phan-3-45807n.aspx
Như vậy trong bài viết mảng (array) trong C++ (phần 3) trên đây Taimienphi.vn vừa giới thiệu cho bạn về vòng lặp For - each và truyền toàn bộ mảng trong hàm trong C++. Trong bài viết mảng (array) trong C++ (phần 4) tiếp theo Taimienphi.vn sẽ giới thiệu tiếp cho bạn về mảng 2D trong C++ là gì, các bạn hãy đón đọc bài viết về mảng trong C phần 4 để có thêm những kiến thức về lập trình C.

Tác giả: Nguyễn Ngọc Thuỷ     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Con trỏ (pointer) trong C
Mảng (array) trong C (phần 2)
Date và Time trong C
Phạm vi biến trong C
Lệnh điều kiện trong C
Từ khoá liên quan:

Mảng (array) trong C++

, học C++, C++,

SOFT LIÊN QUAN
  • Dev C++

    Trình biên dịch C, C++ đa tính năng

    Dev C++ là môi trường phát triển tích hợp (IDE) dành cho lập trình viên C và C++, hỗ trợ đầy đủ tính năng soạn thảo, biên dịch và gỡ lỗi với công cụ MinGW. Bloodshed Dev C++ phù hợp cho cả người mới lẫn lập trình viên ch ...

Tin Mới

  • Cách sử dụng As soon as trong tiếng Anh

    As soon as là một trong những liên từ được sử dụng rất phổ biến trong tiếng Anh, vì vậy, các bạn cần nắm bắt được cách sử dụng As soon as trong tiếng Anh để có được kiến thức hữu ích giúp cho việc học tiếng Anh của mình

  • Cách phát âm đuôi -ed trong tiếng Anh

    Để các bạn có thể biết được các phát âm các từ đuôi -ed được chính xác nhất, bài viết này sẽ giới thiệu đến các bạn nội dung cách phát âm đuôi -ed trong tiếng Anh, qua đó, các bạn có thể giải quyết được những bài tập

  • Số thứ tự trong tiếng Anh, cách viết, đọc

    Số thứ tự trong tiếng Anh, cách viết, đọc không giống với việc viết các số đếm, số thứ tự, cụ thể, các bạn chỉ cần nắm được khoảng 20 số thứ tự đầu tiên, các bạn đã có thể dễ dàng biết đọc và ghép tất cả các số thứ tự

  • Cách thay Notepad bằng trình soạn thảo văn bản khác trên Windows

    Notepad là trình soạn thảo văn bản đơn giản trên Windows, tồn tại hơn 30 năm. Dù hữu ích để ghi chú nhanh, nó ít được Microsoft cải tiến. Vì vậy,