应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

结构体的对齐方式以及结构体嵌套指针的使用方法

  结构体数组
  定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定义是一模一样的,如:structSTUDENTstu〔10〕;
  这就定义了一个结构体数组,共有10个元素,每个元素都是一个结构体变量,都包含所有的结构体成员。defineCRTSECURENOWARNINGSincludestdio。hincludestdlib。hincludestring。hincludetime。htypedefstructTeacher{charname〔50〕;charname;intage;}Teacher;intmain(){Teachera〔3〕{{a,11},{b,12},{c,13}};静态Teachera2〔3〕{aa,13,bb,12,cc,13};for(inti0;i3;i){printf(s,d,a2〔i〕。name,a2〔i〕。age);}intb〔3〕{0};intpB(int)malloc(3sizeof(int));free(pB);Teacherp〔3〕Teacherp(Teacher)malloc(3sizeof(Teacher));if(pNULL){return1;}charbuf〔50〕;for(inti0;i3;i){sprintf(buf,nameddd,i,i,i);strcpy(p〔i〕。name,buf);p〔i〕。age20i;}for(inti0;i3;i){printf(第d个:s,d,i1,p〔i〕。name,p〔i〕。age);}printf();if(p!NULL){free(p);pNULL;}return0;}结构体嵌套一级指针defineCRTSECURENOWARNINGSincludestdio。hincludestdlib。hincludestring。hincludetime。htypedefstructTeacher{charname;intage;}Teacher;showTeacher(Teacherq,intn){for(inti0;in;i){printf(s,d,q〔i〕。name,q〔i〕。age);}}freeTeacher(Teacherq,intn){for(inti0;in;i){if(q〔i〕。name!NULL){free(q〔i〕。name);q〔i〕。nameNULL;}}if(q!NULL){free(q);qNULL;}}TeachergetMem(intn){Teacherq(Teacher)malloc(sizeof(Teacher));Teacherq〔3〕charbuf〔30〕;for(inti0;in;i){q〔i〕。name(char)malloc(30);sprintf(buf,nameddd,i,i,i);strcpy(q〔i〕。name,buf);q〔i〕。age20i;}returnq;}TeachergetMem2(Teachertemp,intn){if(tempNULL){return1;}Teacherq(Teacher)malloc(sizeof(Teacher));Teacherq〔3〕charbuf〔30〕;for(inti0;in;i){q〔i〕。name(char)malloc(30);sprintf(buf,nameddd,i,i,i);strcpy(q〔i〕。name,buf);q〔i〕。age20i;}tempq;return0;}intmain(){charnameNULL;name(char)malloc(30);strcpy(name,aa);printf(names,name);if(name!NULL){free(name);nameNULL;}1Teachert;t。name(char)malloc(30);strcpy(t。name,s);t。age22;printf(namesaged,t。name,t。age);if(t。name!NULL){free(t。name);t。nameNULL;}2TeacherpNULL;p(Teacher)malloc(sizeof(Teacher));pname(char)malloc(30);strcpy(pname,ss);page22;printf(namesaged,pname,page);if(pname!NULL){free(pname);pnameNULL;}if(p!NULL){free(p);pNULL;}3TeacherqNULL;qgetMem(3);intret0;retgetMem2(q,3);if(ret!NULL){returnret;}showTeacher(q,3);freeTeacher(q,3);pNULL;return0;}结构体嵌套二级指针defineCRTSECURENOWARNINGSincludestdio。hincludestdlib。hincludestring。hincludetime。h一个导师有若干学生typedefstructTeacher{intage;charstu;二维内存}Teacher;n1老师个数n2每个老师带的学生数intcreateTeacher(Teachertemp,intn1,intn2){if(tempNULL){return1;}Teacherq(Teacher)malloc(sizeof(Teacher)n1);Teacherq〔3〕for(inti0;in1;i){q〔i〕。stu(qi)stuq〔i〕。stu(char)malloc(sizeof(char)n2);charstu〔3〕for(intj0;jn2;j){q〔i〕。stu〔j〕(char)malloc(30);charbuf〔30〕;sprintf(buf,namedddd,i,i,j,j);strcpy(q〔i〕。stu〔j〕,buf);}q〔i〕。age20i;}tempq;return0;}voidshowTeacher(Teacherq,intn1,intn2){if(qNULL){return;}for(inti0;in1;i){printf(〔aged〕,q〔i〕。age);for(intj0;jn2;j){printf(s,,q〔i〕。stu〔j〕);}printf();}printf();}voidsortTeacher(Teacherp,intn){if(pNULL){return;}Teachertemp;for(inti0;in1;i){for(intji1;jn;j){if(p〔i〕。agep〔j〕。age)降序{tempp〔i〕;p〔i〕p〔j〕;p〔j〕temp;}}}}voidfreeTeacher(Teachertemp,intn1,intn2){if(tempNULL){return;}Teacherqtemp;for(inti0;i3;i){for(intj0;j3;j){if(q〔i〕。stu〔j〕!NULL){free(q〔i〕。stu〔j〕);q〔i〕。stu〔j〕NULL;}}if(q〔i〕。stu!NULL){free(q〔i〕。stu);q〔i〕。stuNULL;tempNULL;}}if(q!NULL){free(q);qNULL;}}intmain(){charnameNULL;charname〔3〕intn3;name(char)malloc(sizeof(char)3);for(inti0;in;i){name〔i〕(char)malloc(30);strcpy(name〔i〕,aaa);}for(inti0;in;i){printf(s,name〔i〕);}for(inti0;in;i){if(name〔i〕!NULL){free(name〔i〕);name〔i〕NULL;}}if(name!NULL){free(name);nameNULL;}1Teachert;t。stu〔3〕chart。stu〔3〕intn3;t。stu(char)malloc(sizeof(char)3);for(inti0;in;i){t。stu〔i〕(char)malloc(30);strcpy(t。stu,aaa);}for(inti0;in;i){printf(s,t。stu〔i〕);}for(inti0;in;i){if(t。stu〔i〕!NULL){free(t。stu〔i〕);t。stu〔i〕NULL;}}if(t。stu!NULL){free(t。stu);t。stuNULL;}2TeacherpNULL;pstu〔3〕p(Teacher)malloc(sizeof(Teacher));chart。stu〔3〕intn3;pstu(char)malloc(sizeof(char)3);for(inti0;in;i){pstu〔i〕(char)malloc(30);strcpy(pstu,aaa);}for(inti0;in;i){printf(s,pstu〔i〕);}for(inti0;in;i){if(pstu〔i〕!NULL){free(pstu〔i〕);pstu〔i〕NULL;}}if(pstu!NULL){free(pstu);pstuNULL;}if(p!NULL){free(p);pNULL;}3TeacherqNULL;intret0;retcreateTeacher(q,3,3);Teacherq〔3〕q〔i〕。stu〔3〕printf(排序前);showTeacher(q,3,3);sortTeacher(q,3);printf(排序后);showTeacher(q,3,3);freeTeacher(q,3,3);return0;}结构体的深拷贝与浅拷贝defineCRTSECURENOWARNINGSincludestdio。hincludestdlib。hincludestring。hincludetime。htypedefstructTeacher{charname;intage;}Teacher;结构体中嵌套指针,而且动态分配空间同类型结构体变量赋值结构体成员指针变量指向同一块内存intmain(){Teachert1;t1。name(char)malloc(30);strcpy(t1。name,tom);t1。age22;Teachert2;t2t1;深拷贝,人为增加内容,重新拷贝一下t2。name(char)malloc(30);strcpy(t2。name,t1。name);printf(〔t2〕s,d,t2。name,t2。age);if(t1。name!NULL){free(t1。name);t1。nameNULL;}重复释放浅拷贝:t2的值还指向同一块内存t1。namet1释放后t2又释放导致出现错误if(t2。name!NULL){free(t2。name);t2。nameNULL;}return0;}结构体的对齐方式
  结构体的对齐公式:
  记住以下这些规则,把结构体往里面套就可以了。结构体对齐的原则就是牺牲空间的方式来减少时间的消耗,空间用完还可以复用,而时间过去了就再也不会回来了。以pragmapack(x)中x的大小和结构中占用空间最大的成员做比较,取小值为n(外对齐依据)以n值和结构体每个成员比较,得到结果列表为m〔x〕根据每个成员的大小依次向内存中填充数据,要求填充成员的起始地址减去构体起始地址的差都可以整除m〔x〕,如不能整除则向后移动,直到可以整除再填充成员到内存(内对齐依据)当全部成员填充完毕后所占用的字节若不能整除n,则扩充内存到可以整除n为止。
  举个例子:
  在这个例子中structdata的大小为8个字节。

世界杯的暗战,已然上演距离2022年世界杯开幕已不足100天,暗流涌动向来是对大战前夕氛围最恰如其分的表达。世界杯的精彩从来不只是绿茵场上的对抗拉扯,场下那些没有硝烟的战争,那些明争暗斗和你来……36氪首发创业孵化器TURBOX完成战略融资,科技链带动企业文程一城编辑王与桐36氪获悉,4。0版创业孵化器TURBOX已于近日完成首轮战略融资,投资方为MinIPO迷你投,投后估值1亿元。据悉,此轮融资后,TURBOX将与……最新世界500强揭榜谁是最大赢家?哪些城市挂零?文凯风谁是世界第一梯队企业?日前,2022年财富世界500强排行榜发布,中国(包括港澳台地区)共有145家企业上榜,超过美国的124家,连续4年蝉联世界第一。……入门级WiLinkXDR3010值得选择随着WiFi6网络的逐渐普及,支持WiFi6的路由器的入门选择也从最初的AX1800升级到了AX3000,总的速率上限达到了新的高度。而在一众AX3000级别的路由器之中,TP……俄式极简,演绎冷色情怀俄罗斯时尚博主Hika穿搭指南诺里尔斯克依旧是个有趣的城市。在这里能体验到冬天30的严寒和夏天30的酷热。在俄罗斯有很多极地气候的地区,这里常年低温,只有在夏季还会品尝到久违的阳光,沐浴着美丽的心情。……浪姐3谁的手表最贵?王心凌一块表是普通人10年的工资《乘风破浪》一开播,就吸引了无数人的目光,无论是节目内容,还是姐姐们的穿搭,大到服装小到配饰,都是网友们讨论的热点,今天就浅盘一下姐姐们的腕表,有的是亲民价格,有的壕到直接把一……名教头抛弃大坂直美,网友喊话郑钦文赶紧下手,他有啥过人之处?费塞特发文炒了老板大坂直美后,有网友迅速喊话郑钦文,希望这位中国00后金花赶紧联系对方合作,不要错过了这个机会。自从郑钦文在法网出圈后,很多支持者们都希望郑钦文能够成长得……董欣毛孔清澈液真的可以消灭黑头痘痘?打造毛孔吗?反馈图来啦花儿盛开,蝴蝶自来若是你的毛孔盛开那么痘痘就会来了毛孔粗大的原因正常毛孔只有2040微米肉眼难以看见一般来说毛孔粗大以下有三个原因……还在犹豫手机怎么选?先看内行人推荐的三星S22今年的安卓机皇毫无疑问属于S22Ultra,不过它的售价和配置对于很多打工人和学生党来说确实不好下手,售价更亲民的S22则是更适合大多数用户的选择,同样是旗舰配置,与同价位的其……6战场均18分!勇士最大赢家曝光,库里为他当陪衬,大合同要来8年4冠!金州勇士在总决赛第6场角逐中,再次夺得NBA总冠军;这枚戒指含金量十足,这也是自杜兰特出走之后,水花兄弟与格林又一次证明了自己;其实,本场比赛,科尔面对来势汹汹的绿军……曝双曲面双孔屏华为nova10,华为nova9悲惨让路,创低可以看到华为nova10系列正面采用双曲面双孔屏,背面椭圆形摄像头布局,印有nova字样。整体辨识度比华为Nova9系列强,没有娃娃的样子。值得一提的是,由于华为nova……10位港台长发男星,郑伊健帅气逼人,伍佰气质狂放不羁上个年代的港台娱乐圈,长发可不仅限于女明星们,男星们的长发发型也是亮眼十足,帅呆众人。1、郑伊健郑伊健一直都是以长发亮相,说到香港长发男星脑海里面第一个想到的就是郑……
春天发育黄金期,别光给孩子补钙,多吃8道菜,营养均衡长个益脑春天,意味着万物生长的季节,不仅是自然界的动植物,我们人类也是一样。春天也是孩子们发育长身体的季节,所以作为家长们,要多给孩子吃些营养丰富的食物。在孩子生长的过程中,钙的需求量……孟加拉商业鬼才用2万根竹子拼成竹筏航母,一艘能卖8万块你见过宽度度超过40米,长度100米的竹筏吗?如果你第一次来到孟加拉国,就能看到这种场面,这个由两万根竹子组成的怪物,上面还站着不少人,如果从远处看,它不像是竹筏,更像是……乒乓高手齐聚体育宫,强强对话喜迎国庆用一场高级别的精英赛事喜迎国庆,今天的市体育宫,汇聚了全市乒乓高手,由上海市乒乓球协会主办的2022年上海市申房杯乒乓球精英赛在此举行。来自中乒院、上海队、华理工、曹乒校和部分……女性职场到底应该怎么穿?女性在职场中的服装往往陷入困境,裹身裙的长短、高跟鞋的高度、领口的高低,这些都成为了衡量女性专业度的隐形标准。女性在职场中应该如何装扮,朴素还是精致,性感还是严肃,到底由谁说了……韩信成语之王一文教会孩子43个成语某天给我家饺子讲成语故事,突然发现东一榔头西一锤子,想到哪讲到哪,没有逻辑性、连贯性,一会春秋的,一会战国的故事,一会又是西汉的,孩子也是听的云里雾里,刚好自己又比较喜欢历史,……7亿美元被洗劫一空,币安链遭遇史上最大黑客攻击事件据媒体报道,北京时间10月7日凌晨,智能合约平台币安链(BNBChain)遭遇黑客攻击,短短2小时,200万枚币安币被洗劫一空,约合5。7亿美元。随后,黑客将获得的90万枚BN……王者荣耀决赛季返场,内鬼玩家爆料典藏皮肤,花木兰成大赢家随着KPL镜、达摩行僧和甄姬女儿国皮肤相继出现以后,王者荣耀又在最近加大力度返场了花木兰的青春决赛季皮肤。因为早前花木兰的水晶猎龙者已经加入皮肤商店,所以这次的返场也让部分内鬼……SiPM与SPAD基本原理转载知乎pipi大神文章,写的真好。基于PN结的探测器种类:PIN、APD、SPAD、SiPM。下图为PIN、APD与SPAD工作电压区域,其中,SAPD工作在盖革(Geige……新学期要开始了,需要一款平板电脑?华为MatepadPro1华为的平板电脑,做的性价比确实是还可以的。整体的做工和硬件配置都挺不错的,但是定价非常的合理,并没有像iPadpro那样,贵的离谱。虽然ipadpro的综合性能,要比华为Mat……共享轮椅来了,未来10年,不再为租轮椅发愁共享轮椅的成功,就是要让行动不便的老人、运动损伤的年轻人、即将生产的孕妈妈,随时有轮椅可以用,去看病的时候,排队不用站,走路不靠蹦,就像是逛商场一样方便。共享轮椅在医院开……抵达国内!首钢47超外就位,搭档NBA新星受期待,解立彬笑傲北京首钢经历上赛季的惨痛失利之后,休赛期对于阵容进行了大清理,多名老将合同到期走人,就连四外援的组合也被直接解散。在雅尼斯下课之后,北京首钢举荐解立彬担任球队主教练,这也意味着……刚刚,央视新闻联播41秒点赞北京经开区数字经济发展!又上《新闻联播》啦!8月20日央视《新闻联播》聚焦中国数字经济发展用41秒介绍了全国5G网络建设和北京经开区数字工厂解码十年中国……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网