Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Tham biến và tham trị

Cho đến thời điểm này, các hàm mà chúng ta đã nghiên cứu đều truyền tham số theo tham trị. Điều này có nghĩa là, với các tham số này, khi truyền vào hàm, chúng sẽ sao chép giá trị vào cho các tham số này (trong lời gọi hàm), các tham số đó chỉ đóng vai trò là các tham số hình thức, chúng không lưu lại giá trị của chúng, mà các giá trị đó đã bị các lệnh trong hàm làm thay đổi.
Ví dụ Giải thích
#include using namespace std;
void setNum(int a)
{
a = 0;
}
int main()
{
int b = 1;
setNum(b);
cout<
return 0;
}
Nếu tham số a trong hàm setNum được sử dụng như trên (đơn thuần là int a) thì nó được quy định là truyền theo tham trị. Khi truyền theo tham trị, giá trị của biến xuất hiện trong lời gọi hàm này, sẽ không thay đổi sau khi thoát ra khỏi hàm. Điều này có nghĩa là giá trị của biến b trước khi gọi hàm là 1, sau khi gọi hàm, nó vẫn nhận giá trị là 1.

Nếu muốn thay đổi giá trị của biến khi truyền tham số trong hàm, ta sử dụng khai báo tham biến. Với việc quy định các tham số truyền theo tham biến, thì khi khai báo ta chỉ bổ sung vào dấu & ở trước tên tham số đó. Bằng cách này, các biến được sử dụng trong lời gọi hàm, sẽ bị làm thay đổi giá trị sau khi lời gọi hàm kết thúc.
Ví dụ Giải thích
#include using namespace std;
void setNum(int &a)
{
a = 0;
}
int main()
{
int b = 1;
setNum(b);
cout<
return 0;
}
Nếu tham số a trong hàm setNum được sử dụng như trên (int &a) thì nó được quy định là truyền theo tham biến. Khi truyền theo tham biến, giá trị của biến xuất hiện trong lời gọi hàm này, sẽ thay đổi sau khi thoát ra khỏi hàm. Điều này có nghĩa là giá trị của biến b trước khi gọi hàm là 1, sau khi gọi hàm, nó vẫn nhận giá trị là 0.
Việc sử dụng khai báo hàm theo tham biến có ưu điểm: ta biết rằng, một hàm chỉ có thể trả về một giá trị duy nhất. Nếu trường hợp, ta mong muốn hàm trả về nhiều giá trị, ta có thể sử dụng hàm void kết hợp với việc truyền tham số cho hàm theo tham biến. Ví dụ sau đây sẽ cho ta thấy rõ điều này.
Ví dụ Kết quả
#include using namespace std;
void swap(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
int main()
{
int m = 1;
int n = 2;
swap(m, n);
cout<<”m=”<<<”, n=”<
return 0;
}
m= 2, n=1
Giải thích: trong khai báo hàm swap, tham số a và b được quy định truyền theo tham biến. Hàm này sẽ thực hiện việc hoán đổi giá trị của hai tham số hình thức a và b. Trong hàm main, hai biến m, n có giá trị tương ứng là 1 và 2. Khi gọi hàm swap, thì hai biến này sẽ bị hoán đổi giá trị cho nhau. Do đó, kết quả in ra là m=2, n=1. Như vậy, hàm trong trường hợp này trả về hơn một giá trị mong muốn.
Lưu ý: bạn lưu ý rằng, cách truyền tham biến như trên chỉ áp dụng cho C++, trong C bạn chỉ có thể truyền tham biến nhờ con trỏ. Cách này, vẫn còn hoạt động tốt trên C++.
Ví dụ Kết quả
#include using namespace std;
void swap(int *a, int *b)
{
int *c;
*c = *a;
*a = *b;
*b = *c;
}
int main()
{
int m = 1;
int n = 2;
swap(&m, &n);
cout<<”m=”<<<”, n=”<
return 0;
}

No comments:

Post a Comment