首页 新闻 会员 周边 捐助

为什么以下不同函数参数对应数据有的改变有的没有改变

0
[待解决问题]

参数为结构体时
#include "stdio.h"
struct tree
{ tree(){max=0;}
 int max;
 int min;
}people[1001];
void find(tree one)
{
   one.max++;
   people[0],min=1;
}
void main()
{
...find(people【5】;
a=people[3].max;
}这样经过find函数后。a得到的people[3]结构体中的max仍然是0而不是1;{而people[0]。min为0 就不解释了)
--------------------参数为数组时
find(int a[])
{
a[0]=3;
}
void main(){int cd[5];bb=find(cd)}
则find(cd);中cd[0]经过find后会变为3即bb会为3. 和上面的不一样了。
---------------------参数为结构体指针
struct tree
{ tree(){max=0;}
 int max;
 int min;
}people[1001];
void find(tree *one)
{
   one->max++;
   people[0].min=1;
}
void main()
{
...find(&people[5]);
a=people[3].max;
}people[5].max和a都变为1;
综上所述。
我们可以知道,如果函数参数是指针/地址(不论是数组指针结构体指针等任何指针)则参数所对应的数据经过函数改变后在函数外时数据也会改变。 而如果参数仅仅是结构体等,则改变仅限在函数里,函数结束后,数据没有改变。为什么呢????

凯枫几多的主页 凯枫几多 | 菜鸟二级 | 园豆:202
提问于:2012-10-31 00:58
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册