永发信息网

C语言中联合和结构有什么区别

答案:2  悬赏:40  手机版
解决时间 2021-02-24 02:15
  • 提问者网友:椧運幽默
  • 2021-02-23 01:49
如题...多方面论证
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-02-23 03:24
前面对联合变量的定义和联合变量成员的表示以及对联合变量的赋值作了描述,可以看出联合与结构有许多相似之处,但是也指出了两者的最大区别在于联合是共址的,结构是异址的。即联合的所有成员共同使用一个内存地址,而结构的每个成员都有自己的内存地址。 由于联合的共址特性使得它与结构产生了很大差别。例如,在斌初值时,联合变量只能给第一个成员赋初值;不能对联合变量名赋值;不能用联合变量作函数参数,也不能用联合变量作函数的返回值,只能用指向联合变量的指针作函数参数。 下面举出两个例子说明联合变量的使用和特点。 [例9.1] 分析下列程序的输出结果,进而说明联合变量的成员是共址的。uninn data{char c_data;int i_data;float f_data;};main(){unian data dl;d1.c_data='a';dl.i_data=5;d1.f_data=3.7;printf ("%c\t%d\t%.2f\n",dl.c._data,dl.i_data,dl. f,data);printf("%d\n',sizeof(dl));printf(" %p\t%p\t%p\t%p\n",&dl.c_data,&dl.i_data,&dl.f.data,&dl);} 执行该程序输出结果如下:
? ? 3.7(?表示无意义)
4
FFD6 FFD6 FFD6 FFD6 说明: (1)该程序中,首先定义一个联合,其名为data,它有3个成员,分别是三种不同类型。又定义联合变量d3,并给它的三个成员分别赋值。当使用printf ( )函数输出dl的三个成员的值时,前两个成员输出值是无意义的,只有最后一个成员是有意义的,其值为3. 7.这说明:某一时刻一个联合变量中只有一个成员起作用,其他成员不起作用。 (2)输出,SizeoE(dl )的值为4,这说明联合变量d1占内存4个字节。在多个联合成员共占一个内存地址时,该地址所指向的内存空间是所有成员中占内存空间最大的成员所占的内存空间。该例中的三个成员所占内存字节数分别为1.2和4,最大的是4,因此,联合变量dl所占内存空间为4个字节。 (3)使用printf ( )函数分别输出联合变量dl的三个成员的内存地址都是相同的,并且与联合变量dl的地址值也是相同的,可见联合变量各成员是共址的。
全部回答
  • 1楼网友:山有枢
  • 2021-02-23 04:18
举例说明 例如你使用的是turboc include 代表编译时直接在turboc软件设置指定的路径(默认是turboc所在文件夹下的include文件夹)中寻找里面是否有stdlib.h的库文件。如果有,直接加载;如果没有,报错(无法找到库文件)。 include "stdlib.h" 代表编译时先寻找你正在编辑的源代码文件(c或cpp文件)所在的文件夹里面有没有stdlib.h的库文件。如果有,优先加载这个文件(上面提到的include文件夹下的stdlib.h文件就被无视了),如果没有,就会在turboc软件设置指定的路径(默认是turboc所在文件夹下的include文件夹)中寻找里面是否有stdlib.h的库文件。如果有,直接加载;如果没有,报错(无法找到库文件)。 这就是两者的区别 所以,如果你自己编写了库文件(并且没有将它移动到turboc指定的include文件夹里),要在源代码文件(c或cpp文件)中将这个文件包含进去,就必须使用双引号格式的include语句,而不能使用带<>号的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯