Tôi muốn hiểu sự khác biệt giữa 2 tờ khai, f1
và f2
, dưới đây là những gì: Trong f1
Tôi tuyên bố tham số là một con trỏ đến một chức năng của loại void()
, làm thế nào là f2
khai khác với f1
? Các khai báo có tương đương không? Trong main
Tôi có thể gọi cả hai người trong số họ với các chức năng của nguyên mẫu void()
. Tôi hiểu khái niệm truyền theo giá trị/con trỏ/tham chiếu, tuy nhiên đây là các hàm và không thực sự hiểu sự khác biệt. Nó không giống như tôi có thể "sửa đổi" các chức năng thông qua như tham số trong f1
... Cảm ơn!Con trỏ để tham số chức năng tham số vs chức năng?
PS: đi ngang qua câu hỏi này khi chạm vào vấn đề gây nhiều tranh cãi Hầu hết Parsing nổi tiếng :)
#include <iostream>
using namespace std;
void f1(void (*x)())
{
x();
}
void f2(void x())
{
x();
}
void g1()
{
cout << "Invoking f1(g1())" << endl;
}
void g2()
{
cout << "Invoking f2(g2())" << endl;
}
int main()
{
f1(g1);
f2(g2);
}
Chương trình biên dịch và đầu ra là
Invoking f1(g1())
Invoking f2(g2())
Cảm ơn tất cả, đã nhận nó :) – vsoftco