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 đổi mật khẩu Microsoft Teams trên máy tính, điện thoại

    Đổi mật khẩu Microsoft Teams là bước quan trọng giúp bảo vệ tài khoản của bạn khỏi các mối nguy hiểm bảo mật. Tải Miễn Phí sẽ hướng dẫn bạn cách thay đổi mật khẩu nhanh chóng và dễ dàng trên cả máy tính và thiết bị di động, đảm bảo an toàn cho thông tin cá nhân khi sử dụng Teams.

  • Cách lên lịch cuộc họp trên Teams Chat, Microsoft Teams

    Lên lịch cuộc họp trên Microsoft Teams là cách nhanh chóng để kết nối và trao đổi công việc hiệu quả với đồng nghiệp. Chỉ với vài thao tác đơn giản, bạn có thể thiết lập thời gian, địa điểm và gửi lời mời họp đến các thành viên ngay trong khung trò chuyện.

  • Thơ 30/4 và 1/5 hay ngày Giải phóng miền Nam, Quốc Tế Lao động

    Ngày Giải phóng miền Nam 30/4 và Quốc tế Lao động 1/5 là dịp để chúng ta tưởng nhớ lịch sử hào hùng, tôn vinh người lao động và bày tỏ lòng biết ơn. Tuyển tập thơ 30/4 và 1/5 hay dưới đây sẽ mang đến những cảm xúc sâu

  • Chi tiết kỹ năng nhân vật Ignis Free Fire mới

    Một nhân vật mới trong bản cập nhật Free Fire OB49 đang thu hút sự chú ý với bộ kỹ năng độc đáo, mang đến lối chơi tấn công đột phá. Tại đây, Tải Miễn Phí sẽ giúp bạn khám phá chi tiết kỹ năng của Ignis và cách tận dụng sức mạnh của anh chàng này trong trận chiến.