读书人

一个关于引用和指针的有关问题

发布时间: 2012-04-05 12:42:39 作者: rapoo

一个关于引用和指针的问题
大家好,关于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 楼主能否贴下具体代码跟结构

读书人网 >C++

热点推荐