Вы объявляете переменную strcpy_ptr
.Вы хотите, чтобы эта переменная была указателем на функцию, возвращающую char*
.Если бы вы сделали это без скобок следующим образом:
char **strcpy_ptr(char *dst, const char *src);
Это был бы прототип функции, которая возвращает char**
- не то, что вам нужно.Скобки должны сгруппировать одну звезду с переменной и отделить звезду от возвращаемого типа .
Помните, что указатели объявляются так:1016 *
Где T
- некоторый тип.Чем больше звезд вы добавляете, тем больше уровней косвенности вы добавляете, прежде чем, наконец, доберетесь до фактического T
.Таким образом, char **c
будет указателем на указатель на char
.То же самое относится и к указателям на функции: T
- это char*
, а *var
должны быть разделены круглыми скобками, потому что C не знает пробелов.C просто добавил немного дополнительного синтаксиса, чтобы указать, какой тип и сколько аргументов принимает функция, на которую указывает указатель.Это только часть того, как работает С.