1
具有这样的结构指针和指针引用
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;
}
我需要通过指针作为参考。否则,指针的本地副本将被更改而不是外部。我假设compilator创建类似于
Person *temporary = new Person(*f);
但我会不必通过引用传递数组? 我很困惑这个事实。
因此,如果第一个/最后一个指向第一个元素,我可以只传递指针而不参考? –
是的,你可以。如果你想改变指针本身,你只需要通过引用传递指针(或者作为指针指针)。 –