[Học lập trình C++] Chương 1: 1.4a Làm quen với tham số và arguments
1.4a Làm quen với tham
số và arguments
Function parameters
and arguments
Trong phần trước, bạn
đã học về hàm có thể trả về giá trị cho trình gọi thông qua giá trị trả về của
hàm.
Trong nhiều trường hợp,
rất hữu ích để truyền thông tin vào hàm được gọi, để hàm có dữ liệu để xử lý. Ví
dụ, nếu chúng ta muốn viết một hàm cộng hai số, chúng ta cần một cách nào đó để
nói với hàm 2 số nào cần được cộng khi chúng ta gọi nó. Nếu không, làm sao mà
hàm có thể biết cộng cái gì với nhau? Chúng ta thực hiện điều này thông qua
tham số và argument.
Một function
parameter là một biến được sử dụng trong một hàm nơi mà giá trị được cung cấp bởi
trình gọi hàm. Tham số hàm được đặt giữa hai dấu ngoặc sau tên hàm, với nhiều
tham số có thể chia cách nhau bởi dấu phẩy.
Đây là một vài ví dụ
của hàm với số lượng tham số khác nhau:
// This function takes no parameters
// It does not rely on the caller for anything
void doPrint()
{
std::cout << "In
doPrint()" << std::endl;
}
// This function takes one integer parameter named x
// The caller will supply the value of x
void printValue(int x)
{
std::cout << x << std::endl;
}
// This function has two integer parameters, one
named x, and one named y
// The caller will supply the value of both x and y
int add(int x, int y)
{
return x + y;
}
Một argument là một
giá trị mà truyền vào từ trình gọi đến hàm khi hàm được gọi:
2 |
printValue(6); // 6 is the argument passed to function
printValue()
add(2, 3); // 2 and 3 are the arguments passed to function add()
|
Chú ý rằng nhiều
argument cũng được phân cách bởi dấu phẩy. Số lượng của arguments phải khớp với
số lượng tham số, nếu không trình biên dịch sẽ báo lỗi.
Làm thế nào mà tham số
và argument hoạt động cùng nhau
Khi mà một hàm được gọi,
tất cả tham số của hàm được tạo ra như một biến, và giá trị của mỗi argument được
copy vào tham số tương ứng. Quá trình này được gọi là truyền theo trị.
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//#include "stdafx.h" // Visual Studio users need to
uncomment this line
#include <iostream>
// This function has two integer parameters, one named x, and
one named y
// The values of x and y are passed in by the caller
void printValues(int x, int y)
{
std::cout << x <<
std::endl;
std::cout << y <<
std::endl;
}
int main()
{
printValues(6, 7); // This
function call has two arguments, 6 and 7
return 0;
|
Khi hàm printVaules()
được gọi với argument 6 và 7, tham số của hàm printValue x được tạo ra và được
gán giá trị 6, tham số y được tạo ra và được gán giá trị 7.
Kết quả xuất ra:
6
7
Tham số và giá trị trả
về hoạt động cùng với nhau như thế nào
Bằng cách sử dụng cả
tham số và giá trị trả về, chúng ta có thể tạo ra hàm mà lấy dữ liệu đầu vào thực
hiện một số tính toán và trả về giá trị cho trình gọi.
Đây là một ví dụ của
hàm đơn giản mà cộng hai số lại với nhau và trả về kết quả cho trình gọi.
//#include "stdafx.h" // Visual Studio
users need to uncomment this line
#include <iostream>
// add() takes two integers as parameters, and returns the result
of their sum
// The values of x and y are determined by the
function that calls add()
int add(int x, int y)
{
return x + y;
}
// main takes no parameters
int main()
{
std::cout << add(4, 5) << std::endl; //
Arguments 4 and 5 are passed to function add()
return 0;
}
Khi hàm add() được gọi,
tham số x được gán giá trị 4, và tham số
y được gán giá trị 5.
Hàm add() sau đó tình
toán giá trị x+y, kết quả là 9 và được trả về cho hàm main(). Giá trị này được
truyền vào cout để in giá trị ra màn hình. Kết quả:
9
Nhiều ví dụ thêm
Quan sát một số hàm
khác được gọi.
//#include "stdafx.h" // Visual Studio
users need to uncomment this line
#include <iostream>
int add(int x, int y)
{
return x + y;
}
int multiply(int z, int w)
{
return z * w;
}
int main()
{
using namespace std;
cout << add(4, 5) <<
endl; // within add(), x=4, y=5, so x+y=9
cout << multiply(2, 3) << endl; //
within multiply(), z=2, w=3, so z*w=6
// We can pass the value of expressions
cout << add(1 + 2, 3 * 4)
<< endl; // within add(), x=3, y=12, so x+y=15
// We can pass the value of
variables
int a = 5;
cout << add(a, a) <<
endl; // evaluates (5 + 5)
cout << add(1, multiply(2,
3)) << endl; // evaluates 1 + (2 * 3)
cout << add(1, add(2, 3)) << endl; //
evaluates 1 + (2 + 3)
return 0;
}
Chương trình sẽ tạo
ra kết quả:
9
6
15
10
7
6
Hai câu lệnh đầu tiên
thì rất dễ hiểu. trong câu lệnh thứ 3, tham số là một biểu thức mà sẽ được tính
toán trước khi truyền vào. Trong trường hợp này 1+2 thu được 3, vì vậy 3 được
truyền vào x. 3*4 được tính ra 12, vì vậy 12 được truyền vào y. add(3, 12) tính
ra kết quả 15.
Cặp câu lệnh tiếp
theo thì cũng tương đối dễ.
int a = 5;
cout << add(a, a) << endl; // evaluates
(5 + 5)
trong trường hợp này,
dd() được gọi với x = a và y = a. Do a =
5, add(a, a) = add(5, 5), kết quả là 10.
Quan sát câu lệnh phức
tạp đầu tiên.
cout << add(1, multiply(2, 3)) << endl; // evaluates 1 + (2 * 3)
Khi hàm add() được thực
thi, CPU cần tính những giá trị gì cho tham số x và y. x thì đơn giản vì chúng
ta chỉ truyền vào giá trị 1. Để lấy được giá trị của y, nó cần tính toán hàm
multiply(2, 3). CPU gán giá trị z = 2 và w = 3 và multiply(2, 3) trả về giá trị
integer 6. Giá trị này gán cho y của hàm add(). Add(1, 6) trả về giá trị
integer 7, cái mà truyền vào cout để in ra màn hình.
Nguồn: learncpp.com
Nhận xét
Đăng nhận xét