프로세스 전달 C ++ 파라미터 포인터 ( ) 및 포인터 참조 ( &)와 다르다.
우리는 종종 다음 포인터를 통해 상호 접속 권을 통해 객체에 대한 포인터의 점의 값을 수정할 수 있지만, 동일한 CAN도 참조하여 물체의 값을 수정.
그러나, 전송 포인터는 우리가 포인터를 통해 개체에 대한 포인터 포인트의 값을 수정할 수 있지만, 문제가있다, 그러나 우리는 직접 (주소를 저장하는 포인터 변수) 포인터의 내용을 수정하지 않은 경우 함수 매개 변수 전달하기 때문에 포인터가 실제로 때 가게 내부의 주소 포인터 있지만, 다시 복사하거나 우리는 그 객체의 주소를 가질 것,하지만 원래의 포인터 변수 포인터 변수.
우리는 포인터 변수를 통해 패스를 수정하는 함수의 주소로 할 때, 당신은 포인터 참조를 사용해야합니다, 그렇지 않으면,이 수정은 "무효"
코드 :
#include<iostream>
using namespace std;
class Node {
public:
int data;
};
void fun1(Node* node) {
node = new Node();
node->data = 2;
}
void fun2(Node*& node) {
node = new Node();
node->data = 2;
}
int main() {
Node * node = new Node();
node->data = 1;
fun1(node);
cout << "传指针并没有修改到该指针的值,而是新建了一个指针指向了一个新的对象" << endl;
cout << node->data << endl;
fun2(node);
cout << "传指针引用把传进来的指针指向一个新的对象,并修改该对象的值" << endl;
cout << node->data << endl;
system("pause");
}
결과
传指针并没有修改到该指针的值,而是新建了一个指针指向了一个新的对象
1
传指针引用把传进来的指针指向一个新的对象,并修改该对象的值
2
请按任意键继续. . .