首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数中指针作为参数传递的有关问题,

2012-02-13 
函数中指针作为参数传递的问题,求救各位高手!!初学者,函数传递搞不明白了。。大家看下面的两段简单的程序:#i

函数中指针作为参数传递的问题,求救各位高手!!
初学者,函数传递搞不明白了。。
大家看下面的两段简单的程序:
#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是参量,函数中没改变
[解决办法]
第一个是用指针做参数,传递的变量的地址,在函数中的修改直接就把两个变量给改了
而第二个传递的其实是变量的副本,在函数中修改的是这两个变量的副本,不会影响到变量本身

要根据具体应用选择是用哪种参数传递

热点排行