Что означает параметр функции типа * & в C ++? - PullRequest
2 голосов
/ 25 февраля 2010

После прочтения описания замены адресов указателей в Stackoverflow у меня возник вопрос о синтаксисе C ++ для ссылок.

Если у вас есть функция со следующей подписью:

void swap(int*& a, int*& b)

Что означает int * &? Это адрес указателя на целое число? И, кроме того, поскольку это указатель, почему их не нужно инициализировать следующим образом?

void swap(int*& a, int*& b) : a(a), b(b) {}

Вот справочная публикация вопросов / ответов (ответ на интересующий вопрос): Замена адресов указателей в c

Ответы [ 4 ]

3 голосов
/ 25 февраля 2010

Ссылка на указатель типа int. Эта функция будет вызываться следующим образом:

int* a=...; //points to address FOO
int* b=...; //points to address BAR
swap(a,b);
//a now points to address BAR
//b now points to address FOO
1 голос
/ 25 февраля 2010

Потому что swap здесь функция, а не класс. Ваш второй фрагмент кода не является допустимым синтаксисом C ++ (вы пытаетесь смешать объявление функции с конструктором класса.)

1 голос
/ 25 февраля 2010

Пример, демонстрирующий использование ссылок на указатели:

int items[] = {42, 43};
int* a = &items[0];
int* b = &items[1];
swap(a, b);
// a == &items[1], b == &items[0]
// items in the array stay unchanged
1 голос
/ 25 февраля 2010

Это ссылка на указатель типа int.

Может оказаться полезным: Разница между переменной указателя и ссылочной переменной в c ++

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