Почему некоторые функции помечены звездочкой? - PullRequest
1 голос
/ 12 октября 2019

Язык программирования: C


Я имею дело с проектом, который требует перекодировать определенные уже выполненные функции, глядя на справочную страницу некоторых из них, чтобы увидетьИсходный прототип, я обнаружил, что некоторые из них содержат звездочку перед именем функции, подобную этой, в string.h библиотека char * strchr (const char * s, int c) Что я лично понимаю из звездочки, так это то, что мы добавляем ее в объявление переменной, чтобы сделать ее указателем, но почему функция является указателем.

Ответы [ 4 ]

7 голосов
/ 12 октября 2019

Звездочка является частью возвращаемого типа, поэтому эта функция

char *strchr(const char *s, int c)

Возвращает char*

Кроме того,

int *c;

не является переменной-указателем«к int, но переменная, в которой хранится указатель int (int*)

Почему звездочка перед именем переменной, а не после типа?

1 голос
/ 12 октября 2019

Это означает, что функция возвращает указатель, который указывает на переменную или любой тип структуры или просто ее значение, в данном случае одну переменную char или первый элемент массива char, значение которого(s) определяется / определяется самой функцией (в зависимости от ее обработки). Вы можете использовать этот указатель, чтобы либо проверить, была ли функция выполнена успешно (что является распространенным явлением), либо использовать ее в другом месте программы в соответствии с конкретным назначением функции.

0 голосов
/ 12 октября 2019

Функция с прототипом char * подразумевает, что она возвращает указатель типа char. Другими словами, возвращаемое значение этой функции будет адресом, указывающим на строку (или символ).

0 голосов
/ 12 октября 2019

Указатель похож на любую другую переменную. int и long хранят целые числа. float и double хранит числа с плавающей запятой. Указатели хранят адреса памяти. И нет ничего плохого в функции, возвращающей адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...