Я борюсь со знаком указателя *, я нахожу его очень запутанным в том, как он используется как в объявлениях, так и в выражениях.
Например:
int *i; // i is a pointer to an int
Но какова логика синтаксиса? Что означает * непосредственно перед тем, что я имею в виду? Возьмем следующий пример. Пожалуйста, поправьте меня, где я ошибаюсь:
char **s;
char *(*s); // added parentheses to highlight precedence
И здесь я теряю трек. * S между скобками означает: s - указатель? Но указатель на что? И что означает * вне круглых скобок: указатель на то, что указывает?
Таким образом, значение этого параметра: Указатель, указывающий на то, что указывает s, является указателем на char?
Я в недоумении. Является ли знак * интерпретирован по-разному в декларациях и выражениях? Если да, то как оно интерпретируется по-разному? Где я ошибаюсь?