тип указателя c ++ и вызов по ссылке

0

У меня возникла проблема с типом указателя при написании моей программы. Код выглядит следующим образом:

datatype B;
int func(datatype* A){
 A=&B;
};
int main(int argc,char** argv){
 dataType* mainA=new dataType;
 func(mainA);
}

Я хочу, чтобы после excuse func(mainA). mainA указывает на B. Я знаю, что мой код ошибочен, после этого mainA не изменился. Я думал, что это должно понравиться тому, что называется вызовом по ссылке. Может ли кто-нибудь помочь мне решить эту проблему?

Большое спасибо.

Теги:
pointers
pass-by-reference

2 ответа

3
Лучший ответ

Вы можете сделать параметр ссылкой на указатель. Наконец, указатель также является объектом и может быть изменен через ссылки.

int func(datatype*& A)
{
    A = &B;
}

Однако я бы предпочел вернуть результат и назначить его:

datatype* func()
{
    return &B;
}

// […]

dataType* mainA = func();
  • 0
    спасибо за ответ, хорошо работает
1

Вам нужно объявить параметр A в качестве ссылки на указатель:

int func(datatype *&A){

Теперь сам указатель будет передан по ссылке, поэтому func() будет разрешено изменять mainA если вы передадите его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню