Передача ссылкой в C

Я пытаюсь использовать передачу ссылкой в C так, чтобы функция могла изменить значения параметров, переданных ему. Это - функциональная подпись:

int locate(char *name, int &s, int &i)

Однако, когда я пытаюсь скомпилировать его, я получаю эту ошибку, которая относится конкретно к вышеупомянутой строке:

ошибка: ожидаемый‘’; ‘,’ или‘)’ прежде '&' маркер

Если я удалю '&' программа, то скомпилирует, но это не будет функционировать правильно, очевидно. Что случилось здесь? Как я могу заставить вызов по ссылке работать?

17
задан neuromancer 17 December 2009 в 05:51
поделиться

4 ответа

C не имеет ссылок. Вам необходимо передать указатель на переменную, которую вы хотите изменить:

int locate(char *name, int *s, int *i)
{
    /* ... */

    *s = 123;
    *i = 456;
}

int s = 0;
int i = 0;
locate("GMan", &s, &i);

/* s & i have been modified */
37
ответ дан 30 November 2019 в 10:08
поделиться

C не имеет ссылочных переменных, но вы можете рассматривать ссылку как константный указатель на данные, поэтому

Сделайте константный указатель на данные таким образом, чтобы указатель не мог указывать на другие данные, но данные, на которые они указывают, можно изменить.

int  locate (char *name,  int  * const s, int * const i)
20
ответ дан 30 November 2019 в 10:08
поделиться

Вы не можете сделать это в c. c не имеет ссылки, вместо этого можно использовать указатель.

1
ответ дан 30 November 2019 в 10:08
поделиться

C не поддерживает передачу по ссылке. Вам понадобится C ++, чтобы сделать это так, как он написан, или изменить в

int locate(char *name, int *s, int *i)

и передать указатели на переменные второго и третьего параметра.

7
ответ дан 30 November 2019 в 10:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: