建设手机版网站需要主机多少空间,杭州网站制作工具,wordpress开发移动端,网站维护费一年多少钱我是荔园微风#xff0c;作为一名在IT界整整25年的老兵#xff0c;今天我们来重新审视一下Windows程序员如何学习Linux环境内存管理。由于很多程序在Windows环境下开发好后#xff0c;还要部署到Linux服务器上去#xff0c;所以作为Windows程序员有必要学习Linux环境的内存…我是荔园微风作为一名在IT界整整25年的老兵今天我们来重新审视一下Windows程序员如何学习Linux环境内存管理。由于很多程序在Windows环境下开发好后还要部署到Linux服务器上去所以作为Windows程序员有必要学习Linux环境的内存管理知识。使用链表或者队列等数据结构时通常会使用动态内存存储数据。链表是一种动态地进行存储分配的结构是根据需要开辟内存单元。创建动态链表就是指在程序执行过程中从无到有按照需求开辟节点和输入各节点数据并建立起前后相连的关系。通常链表中的节点会使用结构体变量这个数据类型的变量。这样一个节点就可以表示多个不同数据类型的相关联的信息。在动态链表中必须利用指针变量才能实现节点与节点之间相连接因此在一个节点中应包含一个指针变量用它存放下一个节点的地址。例如可以设计这样一个结构体类型struct student
{int num;int age;float score;struct student *next; /*指向链表的下一个节点*/
}在VI编辑器中编写一个简单的C语言程序test.c实现创建一个学生信息链表学会如何动态地分配所需的内存空间以及如何通过链表将存储在内存空间中的数据输出到控制台。#includemalloc.h
#includestdio.h
#define LEN sizeof(struct student)
typedef struct student
{int num;int age;float score;struct student *next; /*指向链表的下一个节点*/
}stu; /*声明结构体类型 struct student并取别名为 stu*/
int n;
stu *creat(void) /*创建动态链表函数*/
{stu *head,*p1,*p2; /*定义结构体类型的指针*/n0;p1p2(stu*)malloc(LEN); /*开辟一个内存空间*/scanf(%d, %d, %f,p1-num,p1-age,p1-score);/*输入结构体类型的数据*/headNULL; /*头指针置空*/while(p1-num!0) /*判断学号输入是否为0若是0则跳出循环*/{nn1;if(n1)headp1; /*判断输入的是否是第一个数据若是第一个数据则将头指针指向p1*/elsep2-nextp1; /*将p2指向的下一个地址指向p1*/p2p1; /*p2指向p1*/p1(stu*)malloc(LEN);/*再次为p1开辟一个内存空间存储下一个数据*/scanf(%d, %d, %f, p1-num,p1-age,p1-score);}p2-nextNULL; /*p2指向下一个地址指向的是空指针*/return(head); /*返回数据信息的头指针以便从头输出*/
}
main()
{stu *p,*head;headcreat();phead; /*p指向头指针*/if(head!NULL) /*判断头指针是否为空不为空则执行循环体输出信息*/do{printf(%d, %d, %f\n,p-num,p-age,p-score);pp-next;}while(p!NULL);
}运行效果如下$ gcc -o test test.c$./test1001,22,98.761002,22,78.691003,21,89.5601001,22,98.7600021002,22,78.6900021003,21,89.559998$这个程序实现了将学生的学号、年龄和成绩3项信息动态地存储在链表中根据需要可以输入任意多名学生的信息直到输入0时结束输入。此时程序会在终端显示出存储的学生信息。作者简介荔园微风1981年生高级工程师浙大工学硕士软件工程项目主管做过程序员、软件设计师、系统架构师早期的Windows程序员Visual Studio忠实用户C/C使用者是一位在计算机界学习、拼搏、奋斗了25年的老将经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代我不知道未来还会有什么时代只记得这一路走来充满着艰辛与收获愿同大家一起走下去充满希望的走下去。