Объясните, пожалуйста, есть ли разница между двумя записями, если есть, то какая?
#include
int sum(int a, int b){
return a+b;
}
main(){
int (*fun)(int , int) = NULL;
fun = sum;
printf("%d
", fun(12,14));
printf("%d
",(*fun)(12,14));
return 0;
}
Ответ
Разница существует лишь на абстрактном концептуальном уровне. Фактической разницы нет.
Получение адреса функции тоже можно записать как fun = sum; или как fun = ∑. Разницы тоже нет.
Можно, разве что, посоветовать быть единообразным, т.е. либо использовать явные операторы и там, и там
fun = ∑
(*fun)(12,14);
либо не использовать их ни там, ни там
fun = sum;
fun(12,14);
Хотя и этот совет, возможно, не заслуживает большого внимания.
Комментариев нет:
Отправить комментарий