为什么d=f(c)是将变量b赋值给d?而不是c赋值给d
匿名课官 核心会员 2019-02-02 11:55:43
65 1 0
问题来自: 结构体和共用体
有以下程序
#include <stdio.h>
#include <string.h>
typedef struct{char name[9];char sex;int score[2]; }STU;
STU f(STU a)
{ STU b={"Zhao",'m',85,90};
  int i;
  strcpy(a.name,b.name);
  a.sex=b.sex;
  for(i=0;i<2;i++) a.score[i]=bscore[i];
  return a;
}
main()
{ STU c={"Qian",'f',95,92},d;
  d=f(c);
  printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);
  printf("%s,%c,%d,%d\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序运行后的输出结果是 ______ 。
A. Zhao,m,85,90,Qian,f,95,92
B. Zhao,m,85,90,Zhao,m,85,90
C. Qian,f,95,92,Qian,f,95,92
D. Qian,f,95,92,Zhao,m,85,90
答案:A
解析:d=f(c),执行过程是将函数f中定义的变量b赋值给d,由于c是按值传递,所以c的值并不受影响。首先输出d的值,即"Zhao",然后输出c的值,即"Qian"。因此选A。

共 1 个回答

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题