What does `*&` in a function declaration mean?

Viewed 67157

I wrote a function along the lines of this:

void myFunc(myStruct *&out) {
    out = new myStruct;
    out->field1 = 1;
    out->field2 = 2;
}

Now in a calling function, I might write something like this:

myStruct *data;
myFunc(data);

which will fill all the fields in data. If I omit the '&' in the declaration, this will not work. (Or rather, it will work only locally in the function but won't change anything in the caller)

Could someone explain to me what this '*&' actually does? It looks weird and I just can't make much sense of it.

8 Answers
Related