Если функция принимает int*
в качестве своего параметра, то указатель передается по самому значению, что означает, что любая модификация самого указателя (не указателя) внутри функции не имеет ничего общего с исходным указателем.например,
void foo(int* a) { a = new int; }
int* a = nullptr;
foo(a);
// a is still nullptr here
Если вы измените тип параметра на int*&
, он будет другим.
void foo(int*& a) { a = new int; }
int* a = nullptr;
foo(a);
// a gets modified