Đối số là gì

Chào các bạn! Rất vui khi được gặp lại các bạn trong khóa học lập trình trực tuyển ngôn ngữ C++.

Trong bài học ngày hôm nay, chúng ta sẽ tìm hiểu về một số cách khác nhau để truyền đối số vào hàm. Như thế nào gọi là đối số?

Ví dụ mình định nghĩa một hàm như sau:

Như vậy, chúng ta có param1param2 là 2 tham số [parameters] của hàm foo.

Tham số của hàm là những biến được khai báo trong việc khai báo hàm. Tham số đóng vai trò tiếp nhận giá trị đầu vào cho hàm mỗi khi hàm được gọi.

Giả sử trong hàm main mình thực hiện gọi hàm foo:

Như vậy, chúng ta có 12 là 2 đối số [arguments]. Khi đó, giá trị 12 sẽ được tiếp nhận và lưu trữ tạm thời trong 2 tham số param1param2.

Đối số là giá trị được truyền vào hàm mỗi khi thực hiện lời gọi hàm. Đối số phải có kiểu dữ liệu phù hợp với tham số của hàm.

Ngôn ngữ C++ hổ trợ cho chúng ta nhiều kiểu truyền đối số khác nhau tương ứng với mỗi kiểu khai báo tham số khác nhau:

  • Truyền đối số là giá trị.
  • Truyền đối số là tham chiếu.
  • Truyền đối số là địa chỉ.

Trong bài này, chúng ta sẽ tìm hiểu 2 kiểu truyền đối số cơ bản: truyền giá trị và truyền tham chiếu.

Truyền đối số là giá trị [pass arguments by value]

Truyền đối số vào hàm là giá trị có nghĩa là chúng ta sẽ đưa giá trị vào hàm và các tham số sẽ tiếp nhận những giá trị được truyền vào.

Ví dụ:

int add[int x, int y] { return x + y; }

Hàm add trên sẽ hoạt động như sau:

Với lời gọi hàm add[4,5] thì giá trị 4 sẽ truyền vào cho biến x của tham số đầu tiên, giá trị 5 sẽ được gán cho biến y của tham số thứ hai.

Biến xy được khai báo làm tham số của hàm add đóng vai trò như là biến cục bộ hoạt động bên trong hàm add. Vì thế, tại thời điểm kết thúc phiên làm việc của hàm, các biến tham số này sẽ bị hủy và những giá trị được truyền vào không còn tồn tại.

Điều gì xảy ra khi truyền đối số cho hàm là giá trị của một biến [variable]?

Ở ví dụ trên, hàm add được truyền vào 2 giá trị xác định là 4 và 5. Bây giờ mình thử lấy ví dụ khi truyền đối số cho hàm là giá trị của biến như sau:

void swapValue[int value1, int value2] { cout

Chủ Đề