有以下程序: #include<stdio.h> #include<string.h> struct A {int a;char b[10];double c;}; void f(struct A*t); m

admin2020-01-10  19

问题 有以下程序:
    #include<stdio.h>
    #include<string.h>
    struct A
    {int a;char b[10];double c;};
    void f(struct A*t);
    main()
    {struct A a={1001,"ZhangDa’’,1098.0};
    f(&a);printf(’’%d,%s,%6.1f\n’’,a,a,a,b,a.c);
    }
    void f(struct A*t)
    {t->a=1002;strcpy(t->b,’’ChangRong’’);
    t->c=1202.0;}
    程序运行后的输出结果是(    )。

选项 A、1001,zhangDa,1098.0
B、1002,ChangRong,1202.0
C、1001,ChangRong,1098.0
D、1002,zhangDa,1202.0

答案B

解析 本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。
转载请注明原文地址:https://kaotiyun.com/show/fFCp777K
0

最新回复(0)