|
1鱼币
第一道
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stu{
char *name,gender;
int score;
}STU;
void f(char *p)
{
p=(char *)malloc(10);
strcpy(p,"Qian");
}
main()
{
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\n",b.name,b.gender,b.score);
}
第二道
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stu{
char name[10],gender;
int score;
}STU;
void f(char *p)
{
strcpy(p,"Qian");
}
main()
{
STU a={"Zhao",'m',290},b;
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\n",b.name,b.gender,b.score);
}
能不能具体说一下这里面的值传递和址传递到底是怎么进行的??
谢谢了!
|
最佳答案
查看完整内容
很简单。开启调试器,你会发现,如果是立即数值传递,他居然有地址。本来你明明传给他的是一个常量一个确定的数值比如f(1,2...)为什么会有地址呢?很简单,你看,你定义一个函数是不是
函数类型 函数名(参数列表){。。。。。。},其中参数列表是不是都是些 int template啊double template啊什么的,你觉得这像什么,是不是想你普通的定义一个变量,所以他的意思就是定义一个变量,只不过是临时的(template)。所以你传递给 ...
|