参数为结构体时
#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;
综上所述。
我们可以知道,如果函数参数是指针/地址(不论是数组指针结构体指针等任何指针)则参数所对应的数据经过函数改变后在函数外时数据也会改变。 而如果参数仅仅是结构体等,则改变仅限在函数里,函数结束后,数据没有改变。为什么呢????