В C, как изменить локальную переменную области без указателя? - PullRequest
4 голосов
/ 13 мая 2019

В библиотеке ncurses есть функции, которые изменяют локальные переменные области видимости без каких-либо указателей.Например:

int x, y;
getyx(stdscr, y, x);    //to get the current position of the cursor

Как это происходит?

1 Ответ

6 голосов
/ 13 мая 2019

getyx не функция, а макрос.

(Игнорируйте очень запутанный тип возврата void на этой странице; проза внизу говорит нам правду!)

Примечания

Все эти интерфейсы являются макросами. «&» не требуется перед переменными y и x.

Он не вводит и не использует новую область действия, поэтому имеет прямой «доступ» к x и y, как они есть.

В качестве аналогии рассмотрим, как работает следующее без &:

#define doubleIt(x) x *= 2

int main()
{
   int x = 1;
   doubleIt(x);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...