C语言求助,题目有图,希望过程详细一些? 。。

 我来答
自我编程
2021-03-16 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

选D

A不完全正确,旧版C不能把共用体变量作为函数参数,C99允许共用体变量作为函数参数。

B不完全正确,不能直接对共用体变量名赋值数值(但是可以用同类型的共用体变量名进行赋值,比如同一种共用体变量a和b,可直接a=b)。

C不完全正确,不能像结构体那样对所有成员初始化,共用体的成员地址不是独立的,共享同一段内存。(但是可以用一个常量来初始化

下面我写的代码演示上面的特殊使用情况:

#include <stdio.h>

union data{

    int n;

    char c;

    short s;

};

#define M 5

int main()

{

    void fun(union data a);//共用体做参数

    union data a={M};//用一个常量初始化

    union data b;

    printf("a.n初值是%d\n",a.n);

    printf("调用函数fun,传递共用体参数,实参是a,形参是c\n");

    fun(a);

    printf("调用结束,实参a.n值不变依然是%d\n",a.n);

    //---------------------------------------------------------

    b.n=2;

    printf("对b.n赋值%d\n",b.n);

    a=b;//用同类型b对共用体变量名a赋值

    printf("直接用b对a赋值(a=b),赋值后a.n变成%d,b.n=%d\n",a.n,b.n);

    a.n=50;

    printf("重新对a.n赋值%d,赋值后a.n=%d,b.n=%d\n",a.n,a.n,b.n);

    return 0;

}

void fun(union data c)

{

    c.n=100;

    printf("传参后fun函数中c.n赋值%d\n",c.n);

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式