函数中指针作为参数传递的问题,求救各位高手!!
初学者,函数传递搞不明白了。。
大家看下面的两段简单的程序:
#include <iostream>
using namespace std;
void swap( int* a, int* b )
{
int t=*a;
*a = *b;
*b = t;
}
int main()
{
int x=10;
int y=20;
swap(&x, &y);
cout < < "x= " < < x < < endl;
cout < < "y= " < < y < < endl;
}
-------------------------
#include <iostream>
using namespace std;
void swap( int a, int b )
{
int t=a;
a = b;
b = t;
}
int main()
{
int x=10;
int y=20;
swap(x, y);
cout < < "x= " < < x < < endl;
cout < < "y= " < < y < < endl;
}
-------------------
这两端程序的结果是不一样的,帮我解释一下吧。。
[解决办法]
因为参数是不可更改的.
指针也不可更改,但指向的内容可以更改.
[解决办法]
指针保存了变量的地址,所以指针取内容修改的是传入变量的内容也就是修改了X,Y
而不是指针的就是传入一个副本(其实是参数复制了一组传入)所以对原本没有修改~
[解决办法]
当然不一样了,你第一个程序x,y的地址做参量,改变了x,y的值,你第二个程序x,y是参量,函数中没改变
[解决办法]
第一个是用指针做参数,传递的变量的地址,在函数中的修改直接就把两个变量给改了
而第二个传递的其实是变量的副本,在函数中修改的是这两个变量的副本,不会影响到变量本身
要根据具体应用选择是用哪种参数传递