共用体
题目一:若有以下定义和语句:union data
{
int i;
char c;
float f;
}a;
int n;
则以下语句正确的是_____
A a=5; B a={2,'a',1.2} C printf("%d\n",a); D n=a;
题目二:设有以下说明,则下面不正确的叙述是____
union data
{
int i;
char c;
float f;
}un;
A un所占的内存长度等于成员f的长度
B un的地址和它的各成员地址都是同一地址
C un可以作为函数参数
D 不能对un赋值,但可以在定义对un时对它初始化
对共用体不熟,感觉题目一都是错的,题目二C D也是错的,麻烦会的给出详细点的解释 第一题:C,第二题:D
联合体公用同一空间,所以他的地址和他的哥哥额成员的地址一样,联合体的内存长度有占空间最大的成员变量决定。
联合体可以以联合体内的任意类型进行输出。
联合体不能直接对l联合体对象进行赋值,只能对联合体内的成员变量进行赋值,所以第一题的AB都是错的,应该是a.i=5或者a.c='a'等等
联合体可以作为函数参数进行传递
#include <stdio.h>
union data
{
int i;
char c;
float f;
}a;
void fun(union data a)
{
printf("%d\n",a);
};
int main(void) {
a.c='a';
fun(a);
printf("%f\n",a);
return 0;
} 1.C
2.B
新人刚刚学习,不知道对不对? 本帖最后由 4goodworld 于 2020-3-21 23:43 编辑
题一:C 题二:C
union共同体主要关注概念:
1.在 C 语言中,允许几种不同类型的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互 相覆盖。这种几个不同的变量共同占用一段内存的结构,被称为共用体类型结构,简称共用体(所以题二B选项是对的)
2.共同体所占用的内存空间为最长的成员所占用的空间 (所以题二A选项是对的)
3.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,并且,不能在定义共用体变量时对它进行初始化。 (所以题一ABD似乎都不对,题二D选项是对的)
4.不能把共用体变量作为函数参数, 也不能是函数返回共用体变量, 但可以使用指向共用体变量的指针。 (所以题二C选项是错的)
我也是网上找的资料,概念(或者说是规则)没有太多为什么,我们得按照规则来办就好了。
页:
[1]