一个关于引用和指针的问题
大家好,关于C++我有个问题不太明白
Point a(3,5)
Point b(4,6)
sort(&a,&b)
sort(*a,*b)
{
a->x=6;
b->x=8;
}
cout<<a.x<<b.x<<endl
为什么最后这个a和b的x值其实没有改变啊请问?
谢谢大伙!
[解决办法]
传值会发生拷贝
[解决办法]
俺咋觉得没错呢?
- C/C++ code
#include <iostream>using namespace std;typedef struct _Point{ int x; int y;}Point;void swap(Point *a, Point *b){ int x = a->x; a->x = b->x; b->x = x;}void main(){ Point a = {1, 2}; Point b = {2, 3}; swap(&a, &b); cout << a.x << endl; cout << b.x << endl;}
[解决办法]
- C/C++ code
#include<iostream>using namespace std;struct point{int x;int y;point(int x,int y){this->x=x;this->y=y;}};void sort(point* a,point *b){a->x=6;b->x=8;}int main(){point a(3,5);point b(4,6);cout<<a.x<<" "<<a.y<<endl;cout<<b.x<<" "<<b.y<<endl;sort(&a,&b);cout<<a.x<<" "<<a.y<<endl;cout<<b.x<<" "<<b.y<<endl;return 0;}
[解决办法]
传递地址过去,可以修改的。没有发现有什么错误。
[解决办法]
二楼的代码:a和b这两个指针并没有发生变化,但a->x和b->x的值已经交换,三楼的sort(point* a,point *b)函数 对指针指向的结构体的x进行操作,所以a.x=6 b.y=8 楼主能否贴下具体代码跟结构