Я написал функцию по строкам:
void myFunc(myStruct *&out) {
out = new myStruct;
out->field1 = 1;
out->field2 = 2;
}
Теперь в вызывающей функции я могу написать что-то вроде этого:
myStruct *data;
myFunc(data);
который заполнит все поля в data
. Если я опускаю '&
' в декларации, это не сработает. (Вернее, он будет работать только локально в функции, но ничего не изменит в вызывающем абоненте)
Может ли кто-нибудь объяснить мне, что на самом деле делает этот *&
? Это выглядит странно, и я просто не могу этого толковать.