博主在几年前的C语言后中,结合自身学习情况和学习感悟在当时的一个寒假做了两份C语言学习的经验总结,分别为 《C语言学习基本框架》 和 《C语言学习基础程序》,
现在把它们分享出来,供大家交流学习,如果能给初学C语言的小伙伴们提供一些帮助也是不错的,想当初我也是从C语言的折磨中走出来的,吼吼吼!
内置类型:
自定义类型:
枚举型: enum
特有表达式:自增++、自减–
复合表达式:+=、-=、*=、/=、%=
条件表达式:表达式1? 表达式2:表达式3
逗号表达式:表达式1,表达式2,表达式3…
关系运算符:< <= > >= == !=
逻辑运算符:&& || !
定义:返回值类型标识符 函数名(形参列表)
{
一组语句;
};
所谓模块化程序设计,就是按类划分和管理函数,每一类包含在一个源文件(.c文件)中,每一个源文件,称为一个模板,可以独立编译,其中一个模块包含主函数(main函数),称为主控模块,每一个模块可以独立编译,但不能运行;编译之后,再进行模块之间的链接,形成一个可运行的程序.
定义:一维数组是一个类型相同、空间相邻、个数有限的对象序列,每一个对象称为数组元素,数组元素的 个数称为数组长度和数组容量.
两者关系: 如果用数组名表示数组首元素的指针,对一个对象,其指针加1的结果是其后续的指针,减1的结果是其前驱的指针,而一个对象的前驱和后续分别表示与该对象前后相邻类型相同的对象.
动态分配函数malloc: void*malloc(unsigned size)
计算类型长度函数sizeof: sizeof(类型说明符,数组名或表达式);
常见使用: int p=(int )malloc(5sizeof(int));
字符串标准输入函数:
int gets(char c)
字符串标准输出函数:
int puts(char c)
字符串基本操作函数包含在标准头文件
struct 结构体名 { 成员声明列表 };
typedef的应用格式:typedef 已有的类型名 类型别名;
typedef struct
{
int yr,mo,day;
)Date;
Date dt=(2020,1,1)
结构体变量名.结构体成员名: dt.yr
结构体指针->结构体成员名: p->yr
(*结构体指针).结构体成员名:(*p).yr
Student a[3]={
{
20151001,"Marry",80},{
20151002,"Tom",89},{
20151003,"Mike",90}};
结构体数组[下标].结构体成员: a[1].num
(*(结构体数组+下标)).结构体成员: ((*a+1)).num
(结构体数组+下标)->结构体成员: (a+1)->num
定义: union 联合体名 { 成员列表 };
特征:
联合体变量可以初始化,但只能初始化第一个成员.联合体变量在初始化之后每次只能访问一个成员.
定义:enum 枚举类型名(枚举常量1,枚举常量2,…枚举常量n);
特征:
每一个枚举常量都表示一个整数,默认情况下,它们的值依次为0,1,…n-1.
有时也可以改变默认值。例如;enum colors(red=1,green,blue);
typedef struct {
Type *date;//Type表示待定的数据类型,指针date指向动态数组
int size; //数组date的数据个数
int max; //数组date的容量
}Seqlist;
//准构造函数和准析构函数
void IniList(Seqlist *l,int n);//生成空表
void FreeList(Seqlist *l);//释放动态数组空间
//用于修改的基本操作函数
void InsertRear(Seqlist *l.Type item);//尾插入
void Insert(Seqlist *l,int id,Type item);//定点插入
void Erase(Seqlist *l,int id);//定点删除
void Clear(Seqlist *l);//清表
//用于读取的基本操作函数
Type Getdate(const Seqlist*l,int id);//取值
int Size(const Seqlist *l);//取数据个数
int Empty(const Seqlist *l);//判空
int Full(const Seqlist *l);//判满
typedef struct
{
Node *head;
Node *tail;
int size;
}List;
typedef struct
{
Type date;
struct Node *prev;
struct Node *next;
}Node;
void Init(List *L);//建空表
Node *Begin(List *L);//取链表左边界
Node *End(List *L);//取链表右边界
Node *Insert(List *L,Node *current,Type item);//定点插入
Node *Erase(List *L,Node *current);//定点删除
Type *Front_pointer(List *L);//取首节点中date的指针
Type Front_date(List *L);//取首节点中date的值
Type *Back_pointer(List *L);//取尾节点中date的指针
Type Back_date(List *L);//取尾节点中date的值
void Push_front(List *L,Type item);//前插
void Push_back(List *L,Type item);//后插
void Pop_front(List *L);//前删
void Pop_back(List *L);//后删
int Empty(List *L);//判空
void Clear(List *L);//清表
void Free(List *L);//释放空间
FILE *fopen(char *filename,char *mode);
//filename表示磁盘文件,mode代表文件使用方
int fclose(FILE *fp);
int fputc(int c,FILE *fp);
int fgetc(FILE *fp);
int fpurs(char *s,FILE *fp);
char *fgets(char *s,int n,FILE *fp);
int fwrite(void *buffer,int size,int n,FILE *fp);
int fread(void *buffer,int size,int n,FILE *fp);
int fscanf(FILE *fp,const char *format,地址1,地址2...);
int fprintf(FILE *fp,const char *format,输出参数1,输出参数2...);
int rewind(FILE *fp);//定位文件指针
int fseek(FILE *fp,long offset,int form);//移动文件指针
int feod(FILE *fp);//测试文件指针是否到文件尾
int ferror(FILE *fp);//测试最近一次操作是否出错
int clearer(FILE *fp);//清除出错标志和文件结束标志
《C语言学习基本框架》仅为博主在学习C语言时自己的记录与积累,加上后期的整理所成。可能对于C语言入门的理解与初步掌握有一定的帮助。
当然,介于当时的水平有限,文章本身可能还存在内容上的纰漏或者错误,如果读者在阅读中发现错误,也请不吝指出,谢谢!
注:《C语言学习基本框架》会放在附件中,感兴趣的小伙伴欢迎下载嗷~
下载链接: C语言学习基本框架——Mr.鹏