C语言 struct与指针

请高手讲解一下struct指针在内存中他怎么分配的,struct二级指针它的作用干什么?

struct a;a属于普通结构变量,(比如int a;整型变量。占用4个字节的内存,内存地址固定,只要没有声明为const则其值可变)struct a的内存占用大小视我们规定struct拥有哪些变量,总大小就是它的内部变量占用字节之和。那么,类似的。指针结构,就是内存给出一个结构体的首地址,其他操作与普通指针一样(指针本身是动态的)。二级指针,可以理解成结构体子变量指针,通常用来在链表中指向另一个结构体的地址(脱离链表的二级指针实际上也没什么用,所以可以是这样说,它就是指向下个结构地址(成为结点)的指针)。使用二级指针可以方便的存储和访问结构中的数据。在一般情况下,它和普通数组的效果一样。在内存使用方面,内存使用效率w=每个元素大小e/(元素大小e+指针(节点)占用内存h)*100%举个例子:链表(struct指针)w=80/(80+20)=80%,数组w=30/30+20=60%.在这两个百分值中,剩余的20%和30%就是浪费了的内存。所以可以看见,指针需要存储的变量越大,struct指针就越占有优势,因为它为我们节约了很大的内存(当使用内存较小时我们通常对此忽略不记,但是当管理大型数据时,我们就不得不考虑这个问题,所以架构指针通常使用在管理对象(通过类建立)上,具体应用,你可以想一下图片处理,把每张图片当作一个结构的对象(这里的对象是变量中复制之后的常量),使用链表,就可以快速访问所有你想访问的并且存在的图片)今天耐性还不错,呵呵!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-08
先声明一个结构体类型 再声明结构体变量 在声明类型时内存不分配空间 声明变量时才分配一个连续的空间用来存放每个成员的数据(分配内存空间的大小等于每个成员各占内存的和)二级指针用于创建链表时指向下一个结点
第2个回答  2019-10-17
确切的说应该是结构体指针,就是该指针指向的内容是以结构体为单位的,如果是一段连续的结构体,那么pt++

指针的跨度是sizeof(struct)
至于二级指针和其他类型的是一样的用法,作为函数参数时可以修改*p所指向的结构体内容
相似回答