函数参数传递

来源:互联网 发布:淘宝开店需要什么要求 编辑:程序博客网 时间:2024/06/05 03:06
#include<iostream>using  namespace std;struct point{    int x;    int y;};void fun1(int a){    a=6;}void fun2(point a){    a.x=7;    a.y=8;}int main(){    int a=1;    struct point po;//struct可以不写哦    po.x=1;    po.y=2;    fun1(a);    fun2(po);    cout<<a<<' '<<po.x<<' '<<po.y<<endl;}

执行结果输出为1  1  2

a=1,po.x=1,po.y=2,函数并未修改这些值。

在fun1()中,相当于临时创建了a,和main里的a不一样,这个函数执行结束后a所占的内存被释放,所以并未修改到main里的a。

改成这样

void fun1(int a){    a=6;    cout<<a;}
这样会在执行这个函数时打印  6,但在函数外a还是1.


若想修改,需要通过指针来传地址,如下。

#include<iostream>using  namespace std;struct point{    int x;    int y;};void fun1(int *a){    *a=6;}void fun2(point *a){    (*a).x=7;    (*a).y=8;}int main(){    int a=1;    point po;//(可以不加struct)    po.x=1;    po.y=2;    fun1(&a);    fun2(&po);    cout<<a<<' '<<po.x<<' '<<po.y<<endl;}

执行结果为6  7  8

0 0