Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Указатели на функции

Объясните, пожалуйста, есть ли разница между двумя записями, если есть, то какая?
#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);
Хотя и этот совет, возможно, не заслуживает большого внимания.

Комментариев нет:

Отправить комментарий