typedef stryct stu {char *name,gender;int score;}STU;
void f(char *p) {p=(char *p)malloc(10)strcpy(p,"Qian");}
main()
STU a=(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);}
typedef stryct 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);}
这两题看见有人问过了,但是没有看懂,第一题在fun中只比第二题多了{p=(char *p)malloc(10) 为什么name输出不一样,求详细解答
c语言中关于结构体成员的变换
答案:2 悬赏:50
解决时间 2021-12-15 00:38
- 提问者网友:暖心后
- 2021-12-14 02:28
最佳答案
- 二级知识专家网友:萌萌哒小可爱
- 2021-12-14 04:02
//// 1 /////////////////////
typedef stryct stu {
char *name,gender;
int score;
}STU;
void f(char *p)
{
p=(char *p)malloc(10);
strcpy(p,"Qian");
}
main()
{
STU a=(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);
}
/// 2 /////////////////////////////////
typedef stryct 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);
}1. 在函数重新分配了内存, 而字符会复制到新的内存中, 但是在函数返回后, 这个分配的内存内容并不会返回给主函数, 所以主函数中的内容不会变化
2. 在调用函数中完成了字符复制, 并返回给了主函数, 所以主函数中的数值发生了变化.
typedef stryct stu {
char *name,gender;
int score;
}STU;
void f(char *p)
{
p=(char *p)malloc(10);
strcpy(p,"Qian");
}
main()
{
STU a=(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);
}
/// 2 /////////////////////////////////
typedef stryct 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);
}1. 在函数重新分配了内存, 而字符会复制到新的内存中, 但是在函数返回后, 这个分配的内存内容并不会返回给主函数, 所以主函数中的内容不会变化
2. 在调用函数中完成了字符复制, 并返回给了主函数, 所以主函数中的数值发生了变化.
全部回答
- 1楼网友:佛说妍妍很渣
- 2021-12-14 05:09
这代码写的莫名其妙乱七八糟的给鬼看呐。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |