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 + 2 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

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

 
Theme

Cấu trúc giao diện và thông tin ở Drupal

page.tpl.php về cơ bản là nơi bố trí chính, chứa toàn bộ website (bạn không nên thêm các thẻ body trong trang này). Nếu bạn đang bắt đầu từ một tập tin HTML, bạn có thể đổi tên nó page.tpl.php và bắt đầu gõ vào các yếu tố cần thiết.

Portal chuyên gia, e-Marketplace portal tạo ra thế giới internet thu nhỏ

Portal chuyên gia, e-Marketplace portal tạo ra thế giới internet thu nhỏ

Ngày nay khái niệm portal không chỉ áp dụng cho các ‘gã khổng lồ truyền thông’ kể trên, nguyên lý một đầu mối cho tất cả đã được áp dụng vào việc nâng cấp,

HTC có thể sẽ bỏ rơi S3 sau khi thua kiện Apple

HTC có thể sẽ bỏ rơi S3 sau khi thua kiện Apple

Công ty Đài Loan dự tính bỏ kế hoạch mua lại thương hiệu card đồ họa máy tính S3 (giá 300 triệu USD) do không giúp được họ trong vụ tranh chấp bản quyền với Apple.

BLOG POSTS

 

Wordpress Freelancer

 

Wordpress Freelancer