#include<iostream>
#include"Tree.h"
Node* temp(Node* head){
std::cout<<head<<std::endl; // 0x5593f6529eb0
head = new Node();
std::cout<<head<<std::endl; // 0x5593f652a2e0
return head;
}
int main(){
Node* head = new Node();
std::cout<<head<<std::endl; // 0x5593f6529eb0
std::cout<<temp(head)<<std::endl; // 0x5593f652a2e0
std::cout<<head<<std::endl; // 0x5593f6529eb0
return 0;
}
"Tree.h"
中定义了结构体Node
, 代码段中把指针head作为实参传入temp函数,temp函数的形参head接到实参,此时进行指针的浅拷贝复制,故函数体内对head进行new操作时,main函数中的指针head指向的地址保持不变
还有一个例子
#include<iostream>
#include"Tree.h"
Node* temp(Node* head){
std::cout<<head->data<<std::endl; // -1
head->data = 0;
std::cout<<head->data<<std::endl; // 0
head = new Node();
head->data = -1;
std::cout<<head->data<<std::endl; // -1
return head;
}
int main(){
Node* head = new Node();
head->data = -1;
std::cout<<head->data<<std::endl; // -1
temp(head);
std::cout<<head->data<<std::endl; // 0
head = temp(head);
std::cout<<head->data<<std::endl; // -1
return 0;
}
祝你对指针的理解更深一步