Столкновение с некоторыми путаницами в указателе на C языке - PullRequest
0 голосов
/ 28 марта 2020

В чем разница между int* ptr(int, int) и int (*ptr)(int, int) ??
Пожалуйста, объясните мне это подробнее, что здесь происходит.

1 Ответ

3 голосов
/ 28 марта 2020

1.

 int* ptr(int, int)

ptr - это функция, которая принимает два int аргумента и возвращает указатель на int.

2.

 int (*ptr)(int, int)

ptr - указатель на функцию, которая принимает два int аргумента и возвращает int.


Последнее имеет смысл, если у вас есть несколько дополнительных функций, доступных, но вы хотите выберите определенный c один конкретным условием соответствия. Затем вы создаете массив указателей на функции и выбираете нужный указатель на функцию. Но обратите внимание, что указанная функция здесь немного отличается от функции первого примера, поскольку она возвращает int, а не указатель на int.

Если указанная функция должна быть эквивалентно первой форме с возвратом указателя на int, вам нужно сделать:

 int* (*ptr)(int, int)

Если у вас есть только одна функция для go, вам не нужно обращаться к ней через указатель и лучше использовать первую форму.

Если вы хотите узнать больше о указателях функций, вот ссылка на специальный вопрос SO:

Как указатели функций в C работа?

...