理工软件工程考研语言程序设计_第1页
理工软件工程考研语言程序设计_第2页
理工软件工程考研语言程序设计_第3页
理工软件工程考研语言程序设计_第4页
理工软件工程考研语言程序设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结构:完整的逻辑整体共74页第2

页提出问题

一个学生有学号/姓名/性别/年龄/地址等属性:

intnum; charname[20]; charsex; intage; charaddr[30]; 这些属性具有内在联系:同一个学生的相关属性。结构类型共74页第3

页解决方案:采用结构定义结构:描述“学生”信息是如何组成组成的;说明结构变量:使用变量存储学生信息;使用结构变量:进行相关的数据处理。

结构称为:自定义数据类型。结构类型共74页第4

页结构定义 结构:逻辑上相关的一组分量的集合。 结构中的分量可以是不同类型的数据,结构中的分量称为结构的成员。

结构定义:在使用结构之前,首先要给出结构的组成。结构定义说明了组成该结构的成员以及每个成员的类型。

结构定义是定义了一种由不同的成员组成的复合类型,只有用这种结构类型说明了一个变量,才会产生具体的实体(变量)。结构类型共74页第5

页结构定义的一般形式

struct结构类型名称 {数据类型成员名1; 数据类型成员名2;

…… 数据类型成员名n; };结构变量说明的一般形式

struct结构类型名称结构变量名;结构类型共74页第6

页实例:日期 structdate{ intyear; /*年*/ intmonth; /*月*/ intday; /*日*/};structdatetoday;结构类型4字节4字节4字节today(structdate)12个字节yearmonthday共74页第7

页实例:处理通信录structaddress{charname[30]; //姓名charstreet[40]; //街道名称 charcity[20]; //城市 charstate[2]; //省市代码 unsignedlongzip; //邮政编码}wang,li,zhang;结构类型wang(96字节)30字节40字节20字节2字节4字节namestreetcitystatezip共74页第8

页结构变量的说明 基本数据类型,int/long/double等,是由系统事先定义,可直接使用。 在使用变量之前,要先声明(说明)变量。 结构是一种构造型数据类型,用户要根据自己的需要可定义结构的组成。 要使用结构必须先说明结构类型的变量。 定义结构是定义了一种由不同的成员组成的复合类型,而只有用这种结构类型说明了一个变量,才会产生具体的实体(变量)。§10-1结构类型共74页第9

页结构变量说明的一般形式

struct结构类型名称结构变量名; 系统为说明的结构变量按照结构定义时的组成(成员分量),分配存储数据的实际内存单元。

例:说明结构变量。

structdatetoday;

structaddresswang,li,zhang; 结构变量同样有存储类型。结构类型共74页第10

页结构变量占用内存情况 结构变量的各成员在内存中占用连续存储区域,占用内存大小为结构中每个成员所占内存的长度之和。4字节4字节4字节today(structdate)12个字节yearmonthdaywang(structaddress)96个字节30字节40字节20字节2字节4字节namestreetcitystatezipintcharunsignedlong结构类型共74页第11

页2字节2字节2字节today(structdate)6个字节yearmonthdaywang(structaddress)96个字节30字节40字节20字节2字节4字节namestreetcitystatezip结构类型求结构变量占用内存大小

sizeof 单目运算sizeof,求运算对象占用的内存空间的字节数。 一般形式:sizeof(变量或数据类型说明符)共74页第12

页例C10-1.C:sizeof运算的意义。

main() {charstr[20]; structdate /*定义结构date*/ { intyear,month,day; }today; /*说明结构变量today*/ structaddress /*定义结构address*/ { charname[30],street[40],city[20],state[2]; unsignedlongintzip; }wang; /*说明结构变量wang*/

...... }结构类型共74页第13

页例C10-1.C:sizeof运算的意义。 printf("char:%d\t",sizeof(char)); printf("int:%d\t",sizeof(int)); printf("long:%d\t",sizeof(long)); printf("float:%d\n",sizeof(float)); printf("double:%d\t",sizeof(double)); printf("str:%d\t",sizeof(str));printf("date:%d\t",sizeof(structdate));

printf(“today:%d\t",sizeof(today)); printf("wang:%d\n",sizeof(wang));§10-1结构类型例C10_120112448206696共74页第14

页关于结构类型的说明

数据类型与变量是不同的概念在说明结构变量时一般先定义一个结构类型,然后再说明变量为该结构类型。只能对变量赋值、存取或运算,而不能对一种数据类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对说明的变量分配空间。结构类型共74页第15

页关于结构类型的说明对结构中的成员,可以单独使用,它的作用与地位相当于普通变量。成员也可以是结构。成员名可以与程序中的变量名相同,二者代表不同的对象。结构类型共74页第16

页例如:structdate {intmonth; intday; intyear; }; structstudent {intnum; charname[20]; charsex; intage; structdatebirthday; charaddr[30]; }student1,student2;d..m..y..birthdayagesexnamenumaddr结构类型程序中可以另定义一个变量

year,它和struct

date

中的成员

year是两回事,互不干扰。共74页第17

页引用结构变量中的成员分量访问结构中的成员通过成员名,称为“按名引用”:结构变量名.成员名

例如:将变量today赋值为:2011/5/18,则要对其各个成员分别赋值:

today.year=2011;today.month=5; today.day=18;“.”是运算符:访问结构中的成员。“.”优先级最高;结合性为从左到右。

结构类型共74页第18

页 例:用结构描述一个人的基本情况。 structperson {charname[30]; charsex; structdatebirthday;/*结构的嵌套定义*/ }man;结构类型共74页第19

页 例:用结构描述一个人的基本情况。

man:1980年3月28日出生的zhang先生: strcpy(,”zhang”);

/*注意:不能写成="zhang";*/ man.sex=’M’;/*为结构中的字符成员赋值*/ man.birthday.year=1980; man.birthday.month=3; man.birthday.day=28; /*为嵌套定义的结构中的成员赋值*/结构类型共74页第20

页如果要将“zhang”改为“zhong”,只要将结构变量man中的数组成员name下标为2的元素‘a’改为‘o’即可。可使用语句: [2]='o';

//为结构变量中数组成员的一个元素赋值结构类型共74页第21

页对结构变量的整体操作 能够对结构进行整体操作的运算符只有:赋值:=

取地址:& 例如:

structdatesunday,today; sunday=today;/*结构变量整体赋值*/结构类型共74页第22

页结构类型的引用说明不能将一个结构变量作为一个整体直接访问。例如,已定义结构变量student1且已赋值,

不能这样引用:

printf(”%s,%c,%d,%d,%d\n”,student1);如果成员本身又是一个结构类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。§10-1结构类型共74页第23

页结构类型的引用说明只能对最低级的成员进行赋值或存取以及运算。 例如,对上面定义的结构变量student1,可以这样访问各个成员: student1.sex student1.birthday.month student1.birthday.day student1.birthday.year结构类型共74页第24

页对变量的成员可以进行各种运算: student2.birthday.year=student1.birthday.year; sum=student1.birthday.month+12; student1.age++;

++student1.age;可以引用成员的地址,也可引用结构变量的地址。 例如:scanf(”%d”,&student1.num); printf(”%p”,&student1);结构类型共74页第25

页结构与数组的关系在结构中使用数组作为结构的成员;使用结构类型作为数组的基类型构成数组——结构数组结构数组

数组中的每一个元素都是结构。

例:记录100个人的基本情况。

structpersonman[100];

man是有100个元素的结构数组,数组的每个元素为

person型。结构与数组共74页第26

页结构数组结构数组的起始下标从0开始数组名表示该结构数组的首地址。结构数组存放在连续的内存区域中,占用内存大小为结构类型的大小乘以数组元素的数量。structpersonman[100];43*100=4300字节301444301444301444......namesymdnsymdnsymdman[0]man[1]man[99]结构与数组共74页第27

页访问结构数组中的元素及结构成员要访问结构数组中的具体元素,必须遵守数组使用的规定,按下标进行访问;要访问结构数组中某个具体元素下的成员,又要遵守有关访问结构成员的规定,使用“.”访问运算符和成员名。结构与数组共74页第28

页实例

要将数组man中的3号元素赋值为:"Fangjin",'M',1983,9,13, 就可以使用下列语句: strcpy(man[3].name,"Fangjin"); man[3].sex='M'; man[3].birthday.year=1983; man[3].birthday.month=9; man[3].birthday.day=13; 要将“Fangjin”改为“Fangjun”:

man[3].name[5]='u';结构与数组共74页第29

页例C10-5.C:简单的密码加密程序。 最简单的加密过程是定义一张加密表。将需要加密的文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的明文加密后输出,表中未出现的字符则不变。

输入

输出

输入

输出

输入

输出

输入

输出

a

d

b

w

c

k

d

e i

i

a

k

b

c

w

e结构与数组共74页第30

页建立加密对照表structtable /*定义结构table*/{ charinput; /*成员input存输入的字符*/ char

output;/*成员output存输出的字符*/};structtabletranslate[]=/*外部结构数组translate并初始化*/{'a','d','b','w','c','k',

'd',';','e','i','i','a',

'k','b',';','c','w','e’}; /*建立加密对照表*/结构与数组共74页第31

页“structtabletranslate[]={...}”有三个作用:说明一个外部的结构数组translate;数组大小由给出的初始化数据决定;对结构数组进行初始化。 程序中给出了数组初始化数据,所以结构数组translate有9个元素。adbwckd;eiiakb;cwetranslate[0]translate[1]translate[2]translate[3]translate[4]translate[5]translate[6]translate[7]translate[8]结构与数组共74页第32

页例C10-5.C:简单的密码加密程序。structtable{ charinput,output;};structtabletranslate[]={'a','d','b','w','c','k',

'd',';','e','i','i','a','k','b',';','c','w','e‘};main(){ charch; intstr_long,i; str_long=sizeof(translate)/sizeof(structtable);

/*计算元素个数*/

while((ch=getchar())!='\n')

{

for(

i=0;translate[i].input!=ch&&i<str_long;i++);

if(i<str_long)putchar(translate[i].output);

/*加密*/

else

putchar(ch); /*原样输出*/

}}结构与数组例C6_2002共74页第33

页难点说明 str_long=sizeof(translate)

/sizeof(structtable); /*计算元素个数*/结构与数组共74页第34

页例C10-4.C:分析程序运行结果 structs

{ intx;int*y;};

intdata[5]={10,20,30,40,50};

structs

array[5]={100,&data[0],200,&data[1],300,&data[2],400,&data[3],500,&data[4]};

数组array的初始化状态如下:100200300400500array[0]array[1]array[2]array[3]array[4]1020304050data[0]data[1]data[2]data[3]data[4]结构与数组共74页第35

页例C10-4.C:分析程序运行结果。 main(){ inti=0;/*说明变量i并赋初值*/

structss_var; /*s_ver:一般的结构变量*/

s_var=array[0];/*整体赋给s_var*/ printf("%d\n",s_var.x); printf("%d\n",*s_var.y); printf("Forarray:\n"); printf("%d\n",array[i].x); printf("%d\n",*array[i].y); printf("%d\n",++array[i].x); printf("%d\n",++*array[i].y); printf("%d\n",array[++i].x); printf("%d\n",*++array[i].y); printf("%d\n",(*array[i].y)

++); printf("%d\n",*

(array[i].y++)); printf("%d\n",*array[i].y++); printf("%d\n",*array[i].y);}结构与数组例C6_2001共74页第36

页例C10-4.C:分析程序运行结果 各个printf语句中对数组操作的含义如下(i=0):

①s_var.x 取s_var的成员x的值 ②*s_var.y 取s_var的成员指针y所指的内容

③array[i].x 取array[i]的x的值 ④*array[i].y 取array[i]的指针y所指的内容1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]s_var10010010100结构与数组1001010010共74页第37

①++

array[i].x

②++

*

array[i].y

③array[++i].x

④*

++

array[i].y1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]1001011011i0120030结构与数组取array[i]的x的值,x加1后输出101取array[i]的y所指的内容,y的内容加1后输出11i先加1后取array[1]的成员x的值200将array[i]的指针y先加1后再取y所指的内容输出30共74页第38

(*array[i].y)++

②*(array[i].y++)

③*

array[i].y++

④*array[i].y1012003004005001120304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]i0130314050结构与数组取array[i]的指针y的内容,输出30,y的内容再加1取array[i]的指针y的内容,输出31,指针y再加1同*(array[i].y++),根据运算符的结合性,隐含了括号,输出40输出50

共74页第39

页结构与指针的关系其一是将指针作为结构中的一个成员其二是指向结构的指针(也称为结构指针)结构与指针共74页第40

页结构指针说明的一般形式struct

结构类型名称*

结构指针变量名; 例如: structdate

*

pdate,today; 说明了两个变量,一个是指向结构date的结构指针pdate,today是一个

date结构变量。 执行语句:pdate=&today;pdatedayyearmonthtoday结构与指针共74页第41

页通过指针访问结构中的成员 采用运算符“->”进行操作。结构指针->成员名 优先级是最高的(15级),从左至右结合 注意:C语言中优先级为15的运算符有4种:()[].-> 通过结构指针pdate访问成员year的操作:pdate->year=2011;

等价于:today.year=2011;

(*pdate).year=2011;//必须加括号结构与指针共74页第42

页例C10-7.C:用结构指针改写加密程序 structtable { charinput,output; }; structtabletranslate[]={’a’,’d’,’b’,’w’,’c’,’k’,'d',';','e','i',’i’,’a’,’k’,’b’,’;’,’c’,’w’,’e’};/*加密对照表*/ main() {charch; structtable*p,*pend;/*p和pend:指向结构的指针*/

pend=&translate[sizeof(translate)/sizeof(structtable)-1];/*pend

指向结构数组translate的最后一个元素*/

while((ch=getchar())!='\n')

{ for(p=translate;p->input!=ch&&p!=pend;p++);

if(p->input==ch)putchar(p->output);

else

putchar(ch);

}}结构与指针例C6_3001共74页第43

页例C10-8.C:请分析程序的运算结果structs{ intx,*y; /*y:结构中的成员是指向整型的指针*/}*p; /*p:指向结构的指针*/intdata[5]={10,20,30,40,50,}; /*data:整型数组*/structsarray[5]={100,&data[0],200,&data[1],300,&data[2],400,&data[3],500,&data[4]}; /*array:结构数组*/main(){ p=array; /*指针p指向结构数组的首地址*/ printf("%d\n",p->x); printf("%d\n",(*p).x); printf("%d\n",*p->y); printf("%d\n",*(*p).y); printf("%d\n",++p->x); printf("%d\n",(++p)->x); printf("%d\n",p->x++); printf("%d\n",p->x); printf("%d\n",++(*p->y)); printf("%d\n",++*p->y); printf("%d\n",*++p->y); printf("%d\n",p->x); printf("%d\n",*(++p)->y); printf("%d\n",p->x); printf("%d\n",*p->y++); printf("%d\n",p->x); printf("%d\n",*(p->y)++); printf("%d\n",p->x); printf("%d\n",*p++->y); printf("%d\n",p->x);}结构与指针例C6_3002共74页第44

页例C10-8.C:请分析程序的运算结果 结构数组array的初始化后的状态如下:1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p10010101结构与指针①p->x ②(*p).x ③*p->y ④*(*p).y⑤

++p->x取结构指针p指向的结构的成员x的值,输出100取结构指针p的内容的成员x的值,输出100取结构指针p的指针成员y的内容,输出10取指针p的内容的指针成员y的内容,输出10p所指的x加1,x先加1后再输出101。p不加1共74页第45

页例C10-8.C:请分析程序的运算结果1012003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p200201202122结构与指针①(++p)->x

②p->x++

③p->x ④++(*p->y)⑤

++

*p->y p先加1后再取x的值,x不加1,输出200先取x的值,然后x再加1,输出200输出201p所指的y的内容先加1,输出21。p不加1,y不加1同上,由运算的结合性隐含了括号,输出22共74页第46

页①*

++

p->y②p->x ③*(++p)->y④p->x⑤*

p->y++⑥

p->x1012013004005001022304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p30201300结构与指针p所指的y先加1后再取y的内容,输出30,p不加1,y的内容不加1输出201p先加1后再取所指y的内容,输出

30输出300取p所指的y的内容,输出30,然后p所指的y加1输出300共74页第47

页①*(p->y)++②p->x ③*p++

->y④p->x 1012013004005001022304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p4030050400结构与指针取p所指的y的内容,输出40,然后p所指的y再加1输出300取p所指的y的内容,输出50,然后p再加1输出400共74页第48

页指针运算与++运算规律小结 由运算符的优先级和结合性决定++操作的对象; 由++的前缀/后缀形式,决定操作的时机。

++p->x p->x++

++*p->y *++p->y *(++p)->y

*p->y++ *(p->y)++ *p++->y结构与指针共74页第49

页例C10-9.C 用结构保存学号和成绩。编写程序,在保持数据原始顺序的前提下,对30名学生按成绩升序排列,输出排序后的学号、成绩和平均分。

struct

stuinf { intstid; /*学生学号*/ intscore; /*学生成绩*/ }stu[

STNUM

]; /*stu:结构数组*/ structstuinf*

p[STNUM];/*p:由指向结构的指针构成的指针数组*/结构与指针共74页第50

若有5名学生:stu数组01020304059095857392p数组p[0]p[1]p[2]p[3]p[4]算法分析:程序中使用结构数组stu,指针数组p;在结构数组和指针数组之间建立指向关系。结构与指针stu数组01020304059095857392p数组p[0]p[1]p[2]p[3]p[4]程序中只对指针数组进行排序,即可实现对所指成绩的排序(选择排序)。共74页第51

页结构与指针 #defineSTNUM

5

...... main() { structstuinf*ptemp,*p[STNUM];inti,j,k,sum=0;

for(i=0;i<=STNUM-1;i++)

{

scanf("%d%d",&stu[i].stid,&stu[i].score);

p[i]=&stu[i]; sum+=stu[i].score;

}

for(i=0;i<=STNUM-2;i++)

{k=i;

for(j=i;j<=STNUM-1;j++)

if(p[k]->score

<p[j]->score)k=j;

if(k!=i)

{

ptemp=p[i];p[i]=p[k];p[k]=ptemp;}

}

for

(i=0;i<=STNUM-1;i++) printf("%d,%d\n",(*p[i]).stid,p[i]->score); printf("averagescore=%d\n",sum/STNUM); }例C6_3003共74页第52

页结构与函数的关系 向函数中传递结构的成员; 在函数之间传递整个结构; 向函数传递结构的地址(指针)。在函数之间传递结构共74页第53

页向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量的方法相同:在函数之间传递成员的值;在函数之间传递成员的地址。实例

printf("%d",man.birthday.year);传递结构成员的值 scanf("%d",&man.birthday.year);传递结构成员的地址 gets();传递结构成员的地址在函数之间传递结构共74页第54

页在函数之间传递整个结构

将结构作为整体,在函数之间传递:将结构变量作为形参;函数的返回值为一个结构类型。在函数之间传递结构共74页第55

页例C10-12.C:利用结构变量求解两个复数之积。①(3+4i)×(5+6i)②(10+20i)×(30+40i)structcomplx{intreal,im;/*real:复数的实部im:复数的虚部*/};structcomplxcmult(za,zb)/*返回值为结构类型*/

structcomplx

za,zb;/*形参为结构类型*/{ structcomplx

w; w.real=za.real*zb.real-za.im*zb.im; w.im=za.real*zb.im+za.im*zb.real; return(

w); /*返回结果,为结构*/}在函数之间传递结构共74页第56

页例C10-12.C:利用结构变量求解两个复数之积 voidcpr(za,zb,z) /*输出复数za×zb=z*/

structcomplx

za,zb,z; /*形式参数为结构类型*/ { printf("(%d+%di)*(%d+%di)=",za.real,za.im,zb.real,zb.im); printf("(%d+%di)\n",z.real,z.im); } main() { staticstructcomplx

za={3,4}; staticstructcopmlxzb={5,6}; structcomplxz,x,y; structcomplxcmult();/*说明返回值是complx型*/ voidcpr();

z=cmult(za,zb); cpr(za,zb,z); x.real=10;x.im=20;y.real=30;y.im=40; z=cmult(x,y); cpr(x,y,z); }在函数之间传递结构例C6_4202共74页第57

页向函数传递结构的地址

向函数中传递结构的地址要将函数的形式参数定义为指向结构的指针。 在调用时要使用结构的地址作为实际参数。

structbook{ charname[20];

floatprice;};sortbook(term,pbook,count)structbook

term; /*形参:结构变量term*/structbook

*pbook;/*指向结构数组首元素的指针pbook*/intcount;在函数之间传递结构共74页第58

页例C10-14.C:输入10本书的名称和单价,按照单价排序。使用插入排序算法。插入排序的基本思想是:在数组中,有N个已经从小到大排好序的元素,要加入1个新的

元素时,可以从数组的第1个元素开始,依次与新元素进行比较。当数组中首次出现第i个元素的值大于新元素时,则新的元素就应当插在原来数组中的第i-1个元素与第i个元素之间。此时可以将数组中第i个元素之后(包括第i个元素)的所有元素向后移动1个位置,将新元素插入,使它成为第i个元素。这样就可以得到已经排好序的N+1个元素。在函数之间传递结构共74页第59

页例C10-14.C:输入10本书的名称和单价,按照单价排序。 #defineNUM10

structbook

{ charname[20];

floatprice;

}; main()

{structbook

term,books[NUM]; intcount;

for(count=0;count<NUM;)

{printf("Enterbooknameandprice.book%d=",count+1); scanf("%s%f",,&term.price); sortbook(term,books,count++);/*插入排序*/

}

printf("--------BOOKLIST---------\n"); for

(count=0;count<NUM;count++)

printbook(

&books[count]);/*输出*/

}在函数之间传递结构共74页第60

页sortbook(term,pbook,count)

structbook

term; /*形参:结构变量term*/

structbook

*pbook;/*指向结构数组首元素的指针*/intcount; /*数组中已存入count个有序元素*/{inti;

structbook*q,*pend

=pbook;

for(i=0;i<count;i++,pend++);

for(;pbook<pend;pbook++)

if(pbook->price>term.price)break;

for(q=pend-1;q>=pbook;q--) *(q+1)=*q; *pbook=term; /*在pbook处插入新元素term*/}printbook(structbook*pbook){printf("%-20s%6.2f\n",pbook->name,pbook->price);}在函数之间传递结构例C6_4302共74页第61

页联合与结构的异同联合与结构都是由多个成员组成的一个整体;联合与结构在定义、说明和使用(成员引用、指针)上十分相似。结构:多个成员分量分别占用不同的存储空间构成一个整体;成员分量之间是相互独立的,所进行的各种操作互不影响。联合:多个成员分量共同占用同一存储空间;成员分量之间是相互联系的,所进行的操作相互依赖。联合共74页第62

页定义联合定义一般形式 union

联合类型名

{ 数据类型成员名1; 数据类型成员名2; …… 数据类型成员名n;

}; 其中union为关键字。实例

union

u_type/*定义联合类型u_type*/

{ charch; inti; longli;

}cnvt,*

pcnvt;/*说明联合类型的变量*/联合共74页第63

页联合类型占用内存情况

联合类型的变量占用内存空间的大小等于成员分量中最长的成员分量所占用内存的长度。

对于联合变量cnvt,在TC编译环境下,内存占用情况如图:变量cnvt成员ch成员i成员li联合占用4个字节共74页第64

页例C10-16.C:分析以下程序的运行结果。 main() {union{

/*定义联合并说明联合变量mix*/

longi; /*定义long型成员*/

intk; /*定义int型成员*/

charii; /*定义char型成员*/

chars[4];

/*定义char型数组成员*/

}

mix;

mix.i=0x12345678; /*通过联合中的long型成员i为联合赋初值*/ printf("mix.i=%lx\n",mix.i); printf("mix.k=%x\n",mix.k); printf("mix.ii=%x\n",mix.ii); printf("mix.s[0]=%x\tmix.s[1]=%x\n",mix.s[0],

mix.s[1]); printf("mix.s[2]=%x\tmix.s[3]=%x\n",mix.s[2],

mix.s[3]); }联合共74页第65

页mix0x78ii0x780x56k0x780x560x340x12i0x780x560x340x12ss[0]s[1]s[2]s[3]联合在内存中的数据存储情况:mix.i=0x12345678例C6_5001mix.i

mix.kmix.iimix.s[0]mix.s[1]mix.s[2]mix.s[3]=12345678=5678在VC下为:12345678=78=78=56=34=12地址联

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论