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 Ạ :frowning:

Ở 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ỏ.

4 Likes

Đ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 ạ? :frowning:
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…

1 Like

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?