Имея структурууказатели и указатели на ссылки
struct Person{
Person(int i):id(i){};
Person * next;
int id;
};
class Test{
public:
void addList(Person *&f , Person *&l , int i){
Person *tmp = new Person(i);
if(f == nullptr){
f = tmp;
l = tmp;
return;
}
first -> next = tmp;
last = tmp;
}
void addArr(int *arr , int i){
arr[index++] = i;
}
void print(){
for(int i = 0; i < index; i ++)
cout << arr[i] << " ";
cout << endl;
}
Person *first = nullptr;
Person *last = nullptr;
int index = 0;
int *arr = new int[10];
};
функцию addList
добавить узел в связный список и addArr
добавляет элемент в arr
. Мой вопрос касается указателя и указателя ссылки.
в
void addList(Person *&f , Person *&l , int i){
Person *tmp = new Person(i);
if(f == nullptr){
f = tmp;
l = tmp;
return;
}
first -> next = tmp;
last = tmp;
}
Мне нужно передать указатель в качестве ссылки. В противном случае локальная копия указателя будет изменена не внешней. Я предполагаю, что компилятор создает что-то вроде
Person *temporary = new Person(*f);
Но разве мне не нужно передавать массив по ссылке? Я довольно смущен этим фактом.
так что если первый/последний уже указал на первый элемент, я мог бы просто передать указатель без ссылки? –
Да, вы могли бы. Вам нужно только передать указатель по ссылке (или как указатель на указатель), если вы хотите изменить сам указатель. –