选择题   有以下程序:
    #include <stdio.h>
    typedef struet stu{
    char name[10];
    char gender;
    int score;
    }STU;
    void f(STU a,STU *b,STU c)
    {  $b=c=a;
    printf('%s,%c,%d,',b->name,b->gender,b->score);
    printf('%s,%c,%d,',c.name,c.gender,c.score);
    }
    main()
    {  STU a={'Zhao','m',290},b={'Qian','f',350},c={'Sun','m',370};
    f(a,&b,c);
    printf('%s,%c,%d,',b.name,b.gender,b.score);
    printf('%s,%c,%d\n',c.name,c.gender,c.score);
    }
    程序运行后的输出结果是
 
【正确答案】 A
【答案解析】C语言函数参数传递分为:(1)值传递。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。(2)地址传递。被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。题设中,参数b是地址传递,因此会直接影响实参变量。a、c是值传递,传递的是a、c的拷贝,不会对a、c实参产生影响。因此,调用函数返回时c没有被修改,b被修改了。故答案为选项A。