У меня возникла проблема с типом указателя при написании моей программы. Код выглядит следующим образом:
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 не изменился. Я думал, что это должно понравиться тому, что называется вызовом по ссылке. Может ли кто-нибудь помочь мне решить эту проблему?
Большое спасибо.
Вы можете сделать параметр ссылкой на указатель. Наконец, указатель также является объектом и может быть изменен через ссылки.
int func(datatype*& A)
{
A = &B;
}
Однако я бы предпочел вернуть результат и назначить его:
datatype* func()
{
return &B;
}
// […]
dataType* mainA = func();
Вам нужно объявить параметр A
в качестве ссылки на указатель:
int func(datatype *&A){
Теперь сам указатель будет передан по ссылке, поэтому func()
будет разрешено изменять mainA
если вы передадите его.