快手奥利圆妹一字马珍藏版15部小体积
柔韧女神展现高难度动作合集...
2026-02-11
以前总有一种疑惑。为什么结构体的指针有的需要用分配空间?有的不需要分配空间呢?现在总结一下思路:
typedefstruct{inta;intb;}data;使用这个结构体的两种方式:
typedefstruct{inta;intb;}date;staticintintcms(void*para){intc=((date*)para)->a;printf("cis%d\n",c);}intmain(intargc,char**argv){datedates;dates.a=9;dates.b=2;intcms(&dates);}上述调用中采用的结构体变量。在传入函数时通过指针void *para指针传递过去。需要注意的是不能直接使用para->a来访问结构体的成员。为什么呢。这是因为para只是接收过来的地址。para虽然指向的结构体的首地址。但是这个指针并不知道自己指向的是什么内容和有多少成员。需要(date *)para强制转化一下。这样para就可以知道自己是什么类型的指针。有多少成员。
typedefstruct{inta;intb;}date;staticintintcms(void*para){intc=((date*)para)->a;printf("cis%d\n",c);}intmain(intargc,char**argv){date*dates=(date*)malloc(sizeof(date));dates->a=9;dates->=2;intcms(dates);free(dates);}上述代码使用结构体指针需要分配空间和释放空间。这是堆的使用。如果你不释放。在整个进程结束的时候。系统有会自动回收。简单的程序没什么问题。但是在需要分配大量的空间就可能导致出资源浪费或者内存耗尽的情况
#include<stdio.h>#include<string.h>#include<malloc.h>/*先定义几类结构体*/structstr{inta;intb;}str1;/*这是第一类结构体的形式,有结构体名,有结构体变量*/structstr2{inta;intb;};/*这是第二类结构体的形式,有结构体名,无结构体变量*/typedefstruct{inta;intb;}STR3;/*这是第三类结构体的形式,把结构体重定义为STR3*/typedefstructstr4{inta;intb;}STR4;/*这是第四类结构体的形式,把结构体重定义为STR4,还有结构体名称*/voidmain(){/*定义各类的指针*/structstr*p;structstr2*p2;STR3*p3;structstr4*p4;STR4*p5;/*-----------------------------------------------*/p=&str1;/*结构体指针指向结构体变量的地址首地址*/p->a=1;p->b=2;printf("p->a=%d,p->b=%d\n",p->a,p->b);/*-----------------------------------------------*/p2=(structstr2*)malloc(sizeof(structstr2));/*为结构体指针分配对应结构体类型的大小的首地址*/p2->a=1;p2->b=2;printf("p2->a=%d,p2->b=%d\n",p2->a,p2->b);/*-----------------------------------------------*/p3=(STR3*)malloc(sizeof(STR3));/*为结构体指针分配对应结构体类型的大小的首地址*/p3->a=1;p3->b=2;printf("p3->a=%d,p3->b=%d\n",p3->a,p3->b);/*-----------------------------------------------*/p4=(structstr4*)malloc(sizeof(structstr4));/*为结构体指针分配对应结构体类型的大小的首地址*/p4->a=1;p4->b=2;printf("p4->a=%d,p4->b=%d\n",p4->a,p4->b);structstr4str4a;p4=&str4a;/*结构体指针指向结构体变量的地址的首地址*/p4->a=1;p4->b=2;printf("p4->a=%d,p4->b=%d\n",p4->a,p4->b);/*--------------------------------------------------*//*-----------------------------------------------*/p5=(STR4*)malloc(sizeof(STR4));/*为结构体指针分配对应结构体类型的大小的首地址*/p5->a=1;p5->b=2;printf("p5->a=%d,p5->b=%d\n",p5->a,p5->b);p5=&str4a;/*结构体指针指向结构体变量的地址的首地址*/p5->a=1;p5->b=2;printf("p5->a=%d,p5->b=%d\n",p5->a,p5->b);/*--------------------------------------------------*/}运行结果如下:
以上内容就是为大家推荐的结构体的使用方法(C++结构体和类的区别)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:结构体的使用方法(C++结构体和类的区别)
本文地址:https://www.xiaoyin02.com/shcs/117985.html
相关文章
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)