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);
但我會不必通過引用傳遞數組? 我很困惑這個事實。
因此,如果第一個/最後一個指向第一個元素,我可以只傳遞指針而不參考? –
是的,你可以。如果你想改變指針本身,你只需要通過引用傳遞指針(或者作爲指針指針)。 –