C语言在调用函数中的数据的改变是否影响主函数的数据。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void f(char *p)
{
p=(char*)malloc(10);
strcpy(p,"qian");
}
main()
{
struct stu{
char *name;
char gender;
int score;
};
struct stu a={NULL,'m',290},b;
a.name=(char*)malloc(10);
strcpy(a.name,"zhao");
b=a;
f(b.name);
b.gender='f',b.score=350;
printf("%s,%c,%d,",a.name,a.gender,a.score);
printf("%s,%c,%d,",b.name,b.gender,b.score);

}

如果主函数里调用的子函数,你的形参死一个变量的话,那么子函数在对这个变量的值进行操作,是不会对主函数的那个数据造成影响;但如果你的形参是一个指针变量的话,指针指向的是一个地址的值,就如你的主函数里调用的子函数,你这个子函数里面的形参就是一个指针变量,那么你的实参是b.name,是一个地址,那么子函数对这个地址进行操作是是会影响到他的数据的,还有你b=a,这一句也相当于把a.name的地址赋给了b.name,那么他们的地址是一样的,实际上他们两个其中一个怎么赋值,那么你打印出这两个的数据也都是一样的
温馨提示:答案为网友推荐,仅供参考
相似回答