1
がリンクリストにノードを追加し、addArr
がarr
に要素を追加した構造ポインタとポインタが
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
を有する基準にします。 私の質問は、ポインタと参照ポインタです。
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);
しかし、私は参照によって配列を渡す必要はありませんか? 私はこの事実によってかなり混乱しています。
最初の/最後の要素がすでに最初の要素を指している場合は、参照なしでポインタを渡すことができますか? –
はい、できます。ポインター自体を変更したい場合は、参照(またはポインターへのポインター)でポインターを渡す必要があります。 –