【C语言知识复习】结构体与链表 您所在的位置:网站首页 c语言结构体总结 【C语言知识复习】结构体与链表

【C语言知识复习】结构体与链表

2023-03-11 22:22| 来源: 网络整理| 查看: 265

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。

一、结构体的四种声明方式

方式1:先声明结构体名,后声明结构变量名

struct 结构体名{ 成员变量/数组类型标识 成员变量/数组名;};struct 结构体名 结构体变量名;

方式2:同时声明结构体名和结构变量名

struct 结构体名{ 成员变量/数组类型标识 成员变量/数组名;} 结构变量名;

方式3:只声明结构变量名,不声明结构体名(后续无法再声明该结构体类型变量)

struct { 成员变量/数组类型标识 成员变量/数组名;} 结构变量名;

方式4:使用typedef先声明结构体名,后声明结构体变量(结构体名1可以被省略)

struct { 成员变量/数组类型标识 成员变量/数组名;} 结构变量名;体名2;结构体名2 结构体变量名;struct 结构体名1 结构体变量名;

二、结构体变量中成员的引用方式

结构体变量名.成员名

也可以用代表结构体变量首地址的指针(p)来引用成员:

(*p).成员名 或者 p->成员名

三、动态内存分配与释放

使用动态分配优势:可以灵活控制内存使用,提高内存的利用率;可以跨函数使用内存 (因为必须手动释放)。

劣势:当忘记释放内存时,将导致内存泄漏;代码稍微复杂一些。

使用 malloc() 函数的都可以称为动态分配内存, 如:

int *ptr=(int *)malloc(sizeof(int)*5);

说明:强制转换类型,与括号中一致。malloc(整型参数) 函数返回第一个字节的地址给ptr指针变量。

使用 free() 函数实现对动态内存的释放, 如:

free(ptr);

说明:把ptr所代表的动态分配的内存释放。

使用 realloc()函数修改内存空间,如:

(int *)realloc(ptr,sizeof(int)*N);

说明:如果有足够空间用于扩大,则分配额外内存,并返回地址。

如果原先的内存大小后面没有足够的空闲空间用来分配,那么从堆中另外找一块内存。并把原来大 小内存空间中的内容复制过去。返回新的指针。(数据被移动了)。

因此,若realloc成功,指向原内存地址的指针就成了悬挂指针,即指针指向了一块没有分配给用户使用的内存,如果再用该指针进行操作就可能发生意想不到的问题。所以在应用realloc函数是应当格外注意这种情况。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有