gpt4 book ai didi

c++ - 指针和指向引用的指针

转载 作者:行者123 更新时间:2023-11-30 05:20:52 25 4
gpt4 key购买 nike

有一个结构

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);

但是我不必通过引用传递数组吗?我对这个事实感到很困惑。

最佳答案

But would i do not have to pass array by reference?

不是在这种情况下,通过在 addList 函数中通过引用传递您的 Person 指针,您可以更改指针本身。这就像在说,指针,使用不同的地址”。这是可能的,因为它是通过引用传递的。

而在您的 addArr 函数中,您并未更改指向数组本身的指针。相反,您正在更改指向的数据。 指向数据,使用不同的值”。此数据 arr 指向的是函数范围之外的相同数据。

所以,不,您不必通过引用传递数组。

关于c++ - 指针和指向引用的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com