Tự học C++: Truyền tham số theo tham số giá trị hay tham số biến

Tự học C++: Truyền tham số theo tham số giá trị hay tham số biến

Cho đến nay, trong tất cả các hàm chúng ta đã biết, tất cả các tham số truyền cho hàm đều được truyền theo giá trị. Điều này có nghĩa là khi chúng ta gọi hàm với các tham số, những gì chúng ta truyền cho hàm là các giá trị chứ không phải bản thân các biến. Ví dụ, giả sử chúng ta gọi hàm addition như sau:

int x=5, y=3, z; z = addition ( x , y );

Trong trường hợp này khi chúng ta gọi hàm addition thì các giá trị 5 và 3 được truyền cho hàm, không phải là bản thân các biến.

Tự học C++: Truyền tham số theo tham số giá trị hay tham số biến

Tự học C++: Truyền tham số theo tham số giá trị hay tham số biến

Đến đây các bạn có thể hỏi tôi: Như vậy thì sao, có ảnh hưởng gì đâu? Điều đáng nói ở đây là khi các bạn thay đổi giá trị của các biến a hay b bên trong hàm thì các biến x và y vẫn không thay đổi vì chúng đâu có được truyền cho hàm chỉ có giá trị của chúng được truyền mà thôi.

Hãy xét trường hợp bạn cần thao tác với một biến ngoài ở bên trong một hàm. Vì vậy bạn sẽ phải truyền tham số dưới dạng tham số biến như ở trong hàm duplicate trong ví dụ dưới đây:

// passing parameters by reference

#include

void duplicate (int& a, int& b, int& c)

{a*=2;

b*=2;

c*=2;

}int main ()

{int x=1, y=3, z=7;

duplicate (x, y, z);

cout << “x=” << x << “, y=” << y << “, z=” << z;

return 0;

}

x=2, y=6, z=14

Điều đầu tiên làm bạn chú ý là trong khai báo của duplicate theo sau tên kiểu của mỗi tham số đều là dấu và (&), để báo hiệu rằng các tham số này được truyền theo tham số biến chứ không phải tham số giá trị.

Khi truyền tham số dưới dạng tham số biến chúng ta đang truyền bản thân biến đó và bất kỳ sự thay đổi nào mà chúng ta thực hiện với tham số đó bên trong hàm sẽ ảnh hưởng trực tiếp đến biến đó.

Trong ví dụ trên, chúng ta đã liên kết a, b và c với các tham số khi gọi hàm (x, y và z) và mọi sự thay đổi với a bên trong hàm sẽ ảnh hưởng đến giá trị của x và hoàn toàn tương tự với b và y, c và z.

Kiểu khai báo tham số theo dạng tham số biến sử dụng dấu và (&) chỉ có trong C++. Trong ngôn ngữ C chúng ta phải sử dụng con trỏ để làm việc tương tự như thế.

Truyền tham số dưới dạng tham số biến cho phép một hàm trả về nhiều hơn một giá trị. Ví dụ, đây là một hàm trả về số liền trước và liền sau của tham số đầu tiên.

// more than one returning value

#include

void prevnext (int x, int& prev, int& next)

{prev = x-1;

next = x+1;

}int main ()

{int x=100, y, z;

prevnext (x, y, z);

cout << “Previous=” << y << “, Next=” << z;

return 0;

}

Previous=99, Next=101

(Theo OurViet Network)

Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Binh Tran Thanh

Drupal Consultant

Started my career as a drupal8 developer in EM Solutions . I love learning Web technologies like HTML, CSS, PHP, Jquery Ajax and Drupal backend . Currently working as a drupal backend developer.

Bình luận (0)

 

Add Comment

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
1 + 3 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

Quảng cáo việc làm

 

Thích hợp các bạn nữ mảng thợ may làm việc tại nước NGA

Đơn hàng Tuyển dụng 100 Thợ may đi Nga(đợt 1 tháng 3.2021, đợt 2 tháng 5.2021). Lương thực lãnh 800 USD, bao ăn ở, vé máy bay và visa, phí xuất cảnh(1800 USD)trả khi đi làm có lương. Bạn có thể liên hệ CÔNG TY qua Phone/Zalo: (+84) 944 225 212. Công ty sẽ tư vấn cho bạn.

Xem chi tiết: >>> https://bit.ly/3o9NOfR

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Thêm classes vào links trong Drupal 8

Thêm classes vào links trong Drupal 8

A common task is creating a link, and adding classes and other attributes to it

Samsung đạt lợi nhuận kỉ lục 5,86 tỉ USD trong quý II-2012

Samsung đạt lợi nhuận kỉ lục 5,86 tỉ USD trong quý II-2012

Samsung vừa công bố kết quả tài chính quý II 2012 với các thông số hết sức lạc quan, cụ thể tổng lợi nhuận của hãng đạt 5,86 tỉ USD - tăng 79% so với cùng kỳ năm ngoái, trong đó mảng kinh doanh đem về cho họ 3,65 tỉ USD tiền lời.

Nhiều nguồn tin xác nhận iPhone thế hệ mới sẽ được giới thiệu ngày 12/9, bán ra 21/9

Nhiều nguồn tin xác nhận iPhone thế hệ mới sẽ được giới thiệu ngày 12/9, bán ra 21/9

Nguồn tin của nhiều trang mạng về công nghệ như iMore, The Verge, AllThingsD vừa tiết lộ cùng một thông tin rằng Apple sẽ tổ chức một sự kiện đặc biệt vào ngày 12/9 để ra mắt chiếc iPhone thế hệ mới.