[道理是很简单,但不是任谁都明白]道理是很简单,但不是任谁都明白 听到这样两个小故事,道理非常简单: 其一: 路旁有两棵桃树,一棵在篱笆内,一棵在篱笆外。篱笆内的受保护,枝繁叶茂;篱笆外的常被人攀折,疏枝横斜。春天,...+阅读
c语言中结构体和共同体及应用不是很明白试举例说明
联合体(union)和结构体(struct)的区别
1. 联合说明和联合变量定义
联合也是一种新的数据类型, 它是一种特殊形式的变量。
联合说明和联合变量定义与结构十分相似。其形式为:
union 联合名{
数据类型 成员名;
数据类型 成员名;
...
} 联合变量名;
联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。
下例表示说明一个联合a_bc:
union a_bc{
int i;
char mm;
};
再用已说明的联合可定义联合变量。
例如用上面说明的联合定义一个名为lgc的联合变量, 可写成:
union a_bc lgc;
在联合变量lgc中, 整型量i和字符mm公用同一内存位置。
当一个联合被说明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度。
联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,但定义为指针时, 也要用"->;"符号, 此时联合访问成员可表示成:
联合名->成员名
另外, 联合既可以出现在结构内, 它的成员也可以是结构。
例如:
struct{
int age;
char *addr;
union{
int i;
char *ch;
}x;
}y[10];
若要访问结构变量y[1]中联合x的成员i, 可以写成:
y[1].x.i;
若要访问结构变量y[2]中联合x的字符串指针ch的第一个字符可写成:
*y[2].x.ch;
若写成"y[2].x.*ch;"是错误的。
2. 结构和联合的区别
结构和联合有下列区别:
1) 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合转只存放了一个被选中的成员, 而结构的所有成员都存在。
2) 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
下面举一个例了来加对深联合的理解。
main()
{
union{ /*定义一个联合*/
int i;
struct{ /*在联合中定义一个结构*/
char first;
char second;
}half;
}number;
number.i=0x4241; /*联合成员赋值*/
printf("%c%c\n", number.half.first, mumber.half.second);
number.half.first='a'; /*联合中结构成员赋值*/
number.half.second='b';
printf("%x\n", number.i);
getch();
}
输出结果为:
AB
6261
从上例结果可以看出: 当给i赋值后, 其低八位也就是first和second的值;当给first和second赋字符后, 这两个字符的ASCII码也将作为i 的低八位和高八位。
c语言共同体解
#include
int main(int argc, char *argv[])
{
union cif_ty //联合体定义 楼上讲的很清楚了 和结构体的区别在于几个变量公用内存一个位
//置,换句话说,同一个时间,只有一个变量是有效的,当使用另一个变量后,由于在内存是同
//一个位置,那么之前的变量值被现在的覆盖,无法再使用了,即使使用,也不再是你想要的值
//书上应该讲的更细 ,理解了这些,你的问题就好处理了。不过话说回来你要好好看书的吧。。
{
char c;
int i;
float f;
}cif; // 内存分配以所占字节最大的类型为主 即联合体占4byte
cif.c='a'; //cif.c ='a' ;
printf("c=%c\n",cif.c); //输出 a
cif.f=101.1; //使用了f = 101.1 c变量值存储空间被f占据了 c的值是没用的
printf("c=%c,f=%f\n",cif.c,cif.f); //所以f正常输出 为101.1
cif.i=0x2341; // i 值为 0x2341 f和c 均没有用了
printf("c=%c,i=%d,f=%f",cif.c,cif.i,cif.f); // f 值不可靠,而i的值为 0x2341 下面解释c的值
return 0;
}
i = 0x2341 ;内存存放为0x00002341 (32位cpu为主,64位cpu的话int占64bit )
char 占 8字节,计算机再取 c 变量时候,也是存取这块内存区域,所以取8位字节存储到c变量,而且是取低位,高位舍弃,所以c就为 0x41 ,以字符形式输出就是 A
float 和char 型同理,理解原理就好了。理解了char 就理解了float ,只不过,f=0.000000
,是因为float在内存的存放形式比较复杂,如果你有兴趣,可以去研究浮点型运算类的书籍,或者baidu一下 IEEE754 ,是二进制浮点数算术常用的标准,涉及内容比较多,这里就不写了。。
怪累的,不过还是希望楼主采纳+赞同,好人一生平安。
同时望楼主看书仔细点,或许你错过的一个细节,就是很重要很重要的知识点,导致你走更多的弯路。不过代码这东西还是要多写,多练,多看。多看包括多看代码,提高代码分析力,也包括多看相关专业书。
什么是共同体
所谓共同体,是指社会中存在的、基于主观上和客观上的共同特征(这些共同特征包括种族、观念、地位、遭遇、任务、身份等)而组成的各种层次的团体、组织,既包括小规模的社区自发组织,也可指更高层次上的政治组织,还可指国家和民族这一最高层次的总体。工具书中解释人们在共同生活和共同劳动的过程中自然形成的相对稳定的社会组织形式。在人类历史上普遍存在的社会共同体有家庭、氏侍橘族、部族、民族等。学术文献解释
1、社会共同体是指由建立在劳动基础上的特定关系和纽带联系起来的人群共同体这里所说咐侍的“共同体”是指广义上的人与人之间结合为一个共同的生命存在圈的形式也就是各个个人的生命存在之间的某种比较稳定的相互关系
2、所谓社会共同体,是指植根或覆盖社会基层的社群.这个社会共同体不仅有相同的文化,而且有对这种文化在认同上的自觉.社会共同体是伦理实现的基础衡谈吵,也就是普遍伦理所必须具有的社会平台,而这个问题通常被伦理思想或伦理学说所忽视...
延伸阅读:
试举例论述管理信息系统的应用给企业所带来的改变管理信息系统的应用给企业所带来的改变 可以简化人们日常工作中的大量机械重复的操作,使一些过程繁琐且数据量大的数据收集工作得已高效的进行,信息系统还可以通过对数据的有...
没学过C语言可以学C语言数据结构与算法吗你好 一点小建议希望能对你有帮助 (1)学算法 学习算法和具体的语言还是有一定的联系,比如说你的算法最后要用c语言来实现,因为c是面向过程的,所以这和用面向对象的语言如c++来实...
C语言数据结构与算法分析C语言描述Position不是一个类型,起码C语言中,我写那么多年代码没见过这个类型 。你该把整段代码贴上来。我猜你看的那段代码是伪代码,Position是自定义类型。若Position是类名,那么Positi...
您认为校园文化包括哪些试举例说明对于校园,我想:那是我们再也熟悉不过的一个学习天地。有人说:学习是一件非常以及极其无聊的事情,更别说校园生活的枯燥乏味了。可我却觉得学习是一件快乐的事情,校园生活是多姿多...
大一C语言机试题目1大一C语言机试题目1,求大一C语言期末笔试题及答案谢谢:用dev-c++编译通过,我四题都写一块了,你自己挑出来就行了~#include "stdio.h" #include "stdlib.h" void AVE(int *a,int n) {...
音乐语言的作用举例说明音乐语言的作用举例说明,为什么要研究民族声乐中的声音和语言:浅谈音乐形式中音乐语言的作用 摘要: 语言,无论阳春白雪,还是下里巴人,无论是慷慨激昂,还是愁离别怨,...
试举例说明谨慎性原则在会计核算中的具体应用试举例说明谨慎性原则在会计核算中的具体应用,会计谨慎原则在会计实务中的运用与建议:新《企业会计准则—基本准则》第十八条对谨性原则的表述为:企业对交易或者事项进行会计确...
从四圣试禅心的情节中明白什么从四圣试禅心的情节中明白什么,韩国宫廷的职位日韩宫廷里有哪些职位把职位的等级一一列举出来:小说第23回“三藏不忘本,四圣试禅心”,讲了菩萨化作美女考验唐僧师徒的一段有趣故...
C语言的应用??现在计算机语言有哪些:C不只能考级!! UNIX,WINDOWS漏洞,单片机。。很多地方都用到了C!! C语言是高级语言的基础,学习计算机语言可以先学C,但如果以后不用C直接学C++也行,但入门稍微...