有以下程序:    #include  <string.h>    struct STU    (char  name[10];    int  num;    };    void f(char  *name,  int  num)    {struct

admin2009-02-15  25

问题 有以下程序:    #include  <string.h>    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()    {struct STU  s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1];  f(p->name,p->num);    printf("%s%d\n",p->name,p->num);    }    程序运行后的输出结果是 ______。

选项 A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041

答案A

解析 本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。
转载请注明原文地址:https://kaotiyun.com/show/NqXp777K
0

最新回复(0)