30/09/2018, 18:05

cách hoạt động Hàm trong c++?

xin mọi người cho em hỏi

#include <iostream>
#include <string>
using namespace std;
int giaTri(int x);

void main()
{
    int a=4;
    giaTri(a);
    cout<<giaTri(a)<<endl;
    system("pause");
}
int giaTri(int x)
{   x=5;
    cout<<x<<endl;
    return 0;
}

thì nó hiện tận 3 giá trị:

5
5

còn

#include <iostream>
#include <string>
using namespace std;
int giaTri(int x);

void main()
{
    int a=4;
    giaTri(a);
    cout<<a<<endl;
    system("pause");
}
int giaTri(int x)
{   x=5;
    cout<<x<<endl;
    return 0;
}

lại hiện ra chỉ ra 2 giá trị:

5
4

XIN MỌI NGƯỜI GIẢI THÍCH CÁCH CHƯƠNG TRÌNH NÀY HOẠT ĐỘNG VỚI Ạ

*grab popcorn* viết 20:15 ngày 30/09/2018

Ở CT 1,
giaTri(a) = gọi hàm lần 1.
Mà tham truyền cho hàm có giá trị là 4. Nhưng trong hàm bạn lại biến nó thành 5 và in ra. -> số 5 đầu tiên

cout<<giaTri(a)<<endl; //-> gọi lần 2

Và như trên, in x trong hàm nên có số 5 thứ 2, nhưng khác ở chỗ là lần này bạn cout hàm ra. Nên cout<<giaTri(a)<<endl; in ra 0

Tương tự ct 2. Vì sao giaTri(a) rồi mà in a vẫn ra 4 thì bạn xem qua bài con trỏ.

Bảo Ngọc viết 20:10 ngày 30/09/2018

cout<<giaTri(a)<<endl; //-> gọi lần 2

Đoạn này em nghĩ nó chỉ là thay giá trị thôi chứ ạ. Sao nó lại thực hiện lại hàm lần nữa ạ?
Nếu như thế hóa ra cứ có giaTri(a) ở đâu là nó lại thực hiện lại hàm à anh?

Ngo Dinh Quyen viết 20:08 ngày 30/09/2018

Nếu như thế hóa ra cứ có giaTri(a) ở đâu là nó lại thực hiện lại hàm à anh?

Đúng rồi bạn…
Mỗi lần trình biên dịch gặp lời gọi hàm là hàm sẽ được thực hiện…

Bảo Ngọc viết 20:10 ngày 30/09/2018

vâng vậy em hiểu rồi cảm ơn mọi người nhiều ạ!

Bài liên quan
0