/*
作为函数参数传递的值和址是有本质区别的。作为值传送的变量,在被调函数中完全等同于一个初始化了的局部变量,但按址传送的变量(指针或数组),就等同于外部变量。对于函数f()中形参num,改变它的值时,不会不会影响实参的值,也就是不能将其值的改变传回到实参中。下面的代码中,将num按址方式传递,以便达到原有发热目的。
*/
#include
#include
struct STU { char name[10]; int num; };
void f(char *name, int *num) {
struct STU s[2] = {{"SunDan",20044},{"Penghua",20045}};
*num = s[0].num;
strcpy(name,s[0].name);
}
int main(void) {
struct STU S[2] = {{"YangSan",20041},{"LiSiGuo",200042}},*p;
p = &S[1];
f(p->name,&p->num);
printf("%s %d\n",p->name,p->num);
return 0;
}
#include
#include
struct STU { char name[10]; int num;};
void f(char *name, int *num)
{struct STU
s[2]={{"SunDan",20044},{"Penghua",20045}};
*num=s[0].num;
strcpy(name,s[0].name);
}
main(void)
{struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];
f(p->name,&(p->num));
printf("%s %d\n",p->name,p->num);
}
p->num 是值传递
p->name 是地址传递