若有以下程序 typedef struer stu{char*name, gender; int score; }STU; void f(char *p) {p=(char *) malloc(10);strcpy

admin2016-12-28  20

问题 若有以下程序
    typedef struer 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);)
    则程序的输出结果是

选项 A、Zhao,m,290,Qian,f,350
B、Qian,f,350,Qian,f,350
C、Qian,m,290,Qian,f,350
D、Zhao,m,290,Zhao,f,350

答案D

解析 函数f(char*p)的主要功能申请字符串的存储空间,然后存入字符串"Qian",但当程序调用结束以后,形参指针变量p撤销,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结构体变量定义同时赋初值,初始情况其name指针成员存储空,而后语句为其分配存储空间,存入字符串"Zhao"。执行b=a;语句后,b的数据和a的数据相同,调用函数f以后,b的name成员的值没变。
转载请注明原文地址:https://jikaoti.com/ti/Bwi0FFFM
0

最新回复(0)