thể bất cứ ai xin hãy giải thích hành vi của tài liệu tham khảo trong mã này và tại sao nó in 12 trong dòng đầu tiên thay vì 11.Tài liệu tham khảo trong C++ có chức năng
Dưới đây là đoạn code
#include <cstdio>
using namespace std;
int &fun()
{
static int x = 10;
x++;
return x;
}
int main()
{
int *ptr=&fun();
int *ptr1=&fun();
printf("%p %p \t %d %d",(void*)ptr,(void*)ptr1,*ptr,*ptr1);
return 0;
}
đầu ra của mã là
134519132 134519132 12 12
Xin giải thích vì sao là nhận in theo yêu cầu đầu tiên không tôi hiểu khi cuộc gọi thứ hai được thực hiện nó nên in 12
Cảm ơn bạn đã chỉ ra lỗi của mình khi nghĩ rằng printf() in * ptr ngay khi có sẵn. –
Bạn có thể vui lòng giải thích tại sao printf() được gọi sau khi cả hai giá trị được tính –
@Raghib Ahsan Vì đó là loại ngôn ngữ C là. Trong C bạn mô tả những gì sẽ xảy ra để thứ tự trong những gì bạn gõ những thứ là thứ tự trong đó mã được thực hiện. Printf của bạn được viết sau khi các câu lệnh thực hiện các hàm do đó các giá trị được tính toán trước và chỉ sau đó chương trình của bạn đọc lại các kết quả và in nó. Đọc trang wiki trên C, và đặc biệt là theo liên kết về lập trình bắt buộc trong câu đầu tiên, nếu bạn muốn tìm hiểu thêm về điều này. [liên kết] (https://en.wikipedia.org/wiki/C_ (programming_language)) – Nathilion