Linux中的学生管理系统(超详细版本(一))

本文详细介绍了在Linux环境下使用C语言编写学生管理系统的过程,涉及结构体定义、内存对齐、初始化值问题、野值处理、头文件使用、main函数关键点和输入处理函数如scanf和getchar的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


写的较多,除了整体代码之外,用到什么也会记录下来(看完感觉有用的话给俺评论一下有用,有大佬看的话可以给点建议)

一.设计目的:复习C语言,并且在Linux中使用vim编写学生管理系统,学习使用Makefile将多个文件链接起来。

二.各个模块功能以及实现

1.定义结构体以及结构体的初始化

结构体以及记录过了。学生有以下几个基本信息:姓名、年龄、学号、性别。

重点1:内存问题

tips:结构体的成员在内存中的布局是有内存对齐的。内存对齐是为了优化内存访问的效率和硬件对齐要求而进行的一种处理方式。
请看VCR:

typedef struct{
   
int age;
char name[50];
int id;
char sex[10];
}student;

当这样定义时,我用sizeof()打印出来的内存大小是72字节

typedef struct{
   
int age;
int id;
char name[50];
char sex[10];
}student;

当这样定义时,我用sizeof()打印出来的内存大小是68个字节
这两个结构体定义内容是相同的,都是定义了
int age;int id;char name[50]; char sex[10];

但是他们所占用的大小就是不一样。想深入去了解一下的同学可以自己去搜一下关于内存对齐方面的知识。
所以我们在定义结构体的时候,切记把相同类型的变量定义在一块,这样做可以减少对内存的占用,也就是说可以减少浪费空间。

重点2:结构体初始化值问题

就用我们这个学生管理系统举例吧,你在写完结构体的初始化之后,哪怕在代码写完之后,结构体里面的所有值也是通过运行程序的时候在对每一个值进行修改的。但是这些值最开始你是不知道的,也就是野值,这些值是有可能会导致程序出现问题的,我大一写这个代码的时候也没有进行初始化,虽然代码运行起来没有出问题吧,但是现在看起来这样并不好
请看VCR:

#include <stdio.h>
#define MAX 20

typedef struct{
   
	int age;
	int id;
	char name[50];
	char sex[10];
}student;

int main()
{
   
	student A[MAX]; //定义一个结构体数组
	for(int i=0;i<MAX;i++)
	{
   
		printf("A[%d].age:%d   A[%d].id:%d\n", i, A[i].age, i, A[i].id); //用.操作符去访问结构体成员
	}
	return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值