前言

博主在几年前的C语言后中,结合自身学习情况和学习感悟在当时的一个寒假做了两份C语言学习的经验总结,分别为 《C语言学习基本框架》 和 《C语言学习基础程序》,

现在把它们分享出来,供大家交流学习,如果能给初学C语言的小伙伴们提供一些帮助也是不错的,想当初我也是从C语言的折磨中走出来的,吼吼吼!

一、C语言模式

(1). C程序的基本构成:

1.主函数 int main()

2.变量定义和初始化 int n=345

3.函数的调用和文件包含命令 #include

4.基本输入输出语句 如:scanf(…), printf(…)

5.结束语句 return 0(void类型不需要)

(2). C程序的简单算法:

for循环语句、

while-do循环语句、do-while循环语句、

if-else控制语句、

switch-case控制语句…

(3). C语言基本数据类型:

内置类型:

1.整形: int

2.实型(浮点型): float

3.字符型: char

4.空类型: void

自定义类型:

枚举型: enum

(4). 运算符及表达式:

特有表达式:自增++、自减–

复合表达式:+=、-=、*=、/=、%=

条件表达式:表达式1? 表达式2:表达式3

逗号表达式:表达式1,表达式2,表达式3…

关系运算符:< <= > >= == !=

逻辑运算符:&& || !

(5). 类型转换:

(类型标识符)转换对象 例:a=(int)3.14

二、函数

(1).函数的自定义与调用:

定义:返回值类型标识符 函数名(形参列表)

{

一组语句;

};

形参格式:(类型标识符1 变量1,类型标识符2 变量2… )

调用:被调函数名(实参列表)

实参格式:(表达式1,表达式2…)

(2). 函数的声明与定义:

函数声明:返回值类型标识符 函数名(形参列表)例:int total(int n)

函数定义:要求编译器生成代码并为之分配储存空间.

注:(只有当函数被调用时,函数才分配储存空间,才有了定义.)

(3). 函数与变量的储存类别:

自动局部变量auto:自动局部变量也称“自变量”,其生命周期是一次函数的调用时间.

静态局部变量static.:其生命周期是从初始化开始,到整个程序结束.与自变量有共同的作用域.

外部变量:在函数外部定义的变量称为外部变量,它的生命周期从编译阶段开始,直到程序结束. 它的作用域是其定义后的所有函数.

(4). 模块化程序设计:

所谓模块化程序设计,就是按类划分和管理函数,每一类包含在一个源文件(.c文件)中,每一个源文件,称为一个模板,可以独立编译,其中一个模块包含主函数(main函数),称为主控模块,每一个模块可以独立编译,但不能运行;编译之后,再进行模块之间的链接,形成一个可运行的程序.

三、一维数组和指针

(1). 指针和指针传递:

指针;一个对象的(地址,类型)称为该对象的指针.

指针传递:把一个对象的指针作为参数传递给形参指针传递.

指针的定义:类型标识符 *指针变量名 ,例: int *p

指针的初始化:int *p=&x;(&为指针提取符)

(2). 一维数组:

定义:一维数组是一个类型相同、空间相邻、个数有限的对象序列,每一个对象称为数组元素,数组元素的 个数称为数组长度和数组容量.

格式:类型标识符 数组名[数组长度] 例: int a[5]

初始化格式:int a[5]={5,10,15,20,25} (初始化数据不足,系统用0来填充)

(3). 一维数组和指针:

两者关系: 如果用数组名表示数组首元素的指针,对一个对象,其指针加1的结果是其后续的指针,减1的结果是其前驱的指针,而一个对象的前驱和后续分别表示与该对象前后相邻类型相同的对象.

例:int a[5]={5,10,15,20,25,}

数组名a表示数组首元素a[0]指针,a+1表示a[1]的指针…,如果指针前加上间接访问符* ,则可直接表示相应元素a=a[0],(a+1)=a[1]…

(4). 动态数组:

动态分配函数malloc: void*malloc(unsigned size)

计算类型长度函数sizeof: sizeof(类型说明符,数组名或表达式);

常见使用: int p=(int )malloc(5sizeof(int));

四、C字符串

(1). 字符常量和字符串变量:

常量:“China"

变量:char a[]

赋值:char a[]="China"

(2). 字符串标准输入输出函数:

字符串标准输入函数:

int gets(char c)

字符串标准输出函数:

int puts(char c)

(3). 字符串基本操作函数:

字符串基本操作函数包含在标准头文件中.

求字符串长:

int strlen(const char c)

字符串复制:

char strcpy(char c,const char c1)

字符串连接:

char strcat(char c,const char c1)

字符串比较:

int strcmp(char c,const char c1)

改变字符串的大写:

char strupr(const c)

改变字符串的小写:

char strlwr(const c)

(4). 字符串函数补充:

取子串:

char Substr(const c,int id,int num,char c1)

字串插入:

char Strinsert(char c,int id,const char c1)

字串删除:

char Strerase(char c,int id,int num)

字符查找:

int Chfind(const char c,char ch,int id)

五、结构体,联合体和枚举

(1). 结构体定义:

struct 结构体名 { 成员声明列表 };

(2).typedef修改名字:

typedef的应用格式:typedef 已有的类型名 类型别名;

typedef struct

{

int yr,mo,day;

)Date;

(3). 结构体变量/数组:

结构体变量初始化:

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

(4). 联合体:

定义: union 联合体名 { 成员列表 };

特征:

联合体变量可以初始化,但只能初始化第一个成员.联合体变量在初始化之后每次只能访问一个成员.

(5). 枚举:

定义:enum 枚举类型名(枚举常量1,枚举常量2,…枚举常量n);

特征:

每一个枚举常量都表示一个整数,默认情况下,它们的值依次为0,1,…n-1.

有时也可以改变默认值。例如;enum colors(red=1,green,blue);

六、顺序表

(1). 顺序表的定义:

typedef struct {

Type *date;//Type表示待定的数据类型,指针date指向动态数组

int size; //数组date的数据个数

int max; //数组date的容量

}Seqlist;

(2). 顺序表的声明:

//准构造函数和准析构函数

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);//判满

七、链表

(1). 链表的定义:

typedef struct

{

Node *head;

Node *tail;

int size;

}List;

typedef struct

{

Type date;

struct Node *prev;

struct Node *next;

}Node;

(2). 链表的声明:

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);//释放空间

八、C的流与文件

(1). 文件打开与关闭:

打开:

FILE *fopen(char *filename,char *mode);

//filename表示磁盘文件,mode代表文件使用方

关闭:

int fclose(FILE *fp);

(2). 文件的读写:

字符的读写:

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...);

(3). 文件操作函数:

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.鹏

c语言数据类型的心得体会,C语言学习与感悟——《C语言学习基本框架》相关推荐

  1. 对c语言课程的心得体会,C语言课程设计心得体会

    C语言课程设计心得体会 回想这三周C语言课程设计的过程,真是痛并快乐着. 从领到书的那一刻,我就很郁闷?<C语言程序设计>到底事学什么的,到底有什么用.刚开始上课时?还在迷茫这门课程是用来 ...

  2. c语言心得100,c语言课程设计心得体会

    c语言课程设计心得体会 c语言课程设计心得体会范文一: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技 ...

  3. c语言程序设计作业心得,C语言程序设计实习心得体会

    C 语言程序设计实习心得体会 在这个星期里,我们的学生在老师的带领下进行了 c 语言程序实习学习.在这之前,我们已经对 c 语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围 ...

  4. c语言程序实习心得体会,c语言实习心得体会

    学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题.下面是学习啦带来的c语言实习的心得体会,仅供参考. 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用 ...

  5. python语言的实验心得体会_爱的五种语言——“好妈妈”培训班家教情商课课堂纪实!...

    12月26日晚,荷地镇"七群体七服务"专题培训暨首届"好妈妈"培训班第五节课开课.讲师团成员.东坪村村委会副主任吴丽云以<爱的五种语言>为题为培训班 ...

  6. c语言编程培训心得体会,编程培训个人心得体会 编程学习心得

    <编程培训个人心得体会 编程学习心得>由会员分享,可在线阅读,更多相关<编程培训个人心得体会 编程学习心得(4页珍藏版)>请在人人文库网上搜索. 1.编程培训个人心得体会 编程 ...

  7. C语言指针的心得体会~

    C语言学了这么些天数,果然遇到的第一个难点就是指针~ 指针学习就要结束了,先记录并梳理一下来自己初步理解的内容: 在梳理指针之前: 首先要明白虚拟内存中,是存在连续的,线性排列的内存块,每个内存地址代 ...

  8. python语言的实验心得体会范文_实验报告个人心得体会范文

    实验报告个人心得体会范文 实验后的实验报告让我们有了总结回顾的效果.下面是 xx 整理的实验报告心得体会范文,以供大家阅读. 实验报告心得体会范文 ( 一 ) 这学期我们开设了计 算机网络技术实验课. ...

  9. python语言的实验心得体会范文_关于实验的心得体会范文5篇

    --文章来源网络,仅供参考 1 关于实验的心得体会范文 5 篇 心得体会是指一种读书. 实践后所写的感受性文字. 是指将学习的东西运用 到实践中去, 通过实践反思学习内容并记录下来的文字, 近似于经验 ...

最新文章

  1. 今天发布了一个新的网站矩阵www.wimatrix.cn
  2. python3读取ini文件_python3配置文件ini读取方法
  3. 上传SVN丢失.a文件的问题
  4. gradle java ide_使用Gradle构建Java项目
  5. keras可视化模型
  6. 可行性研究与效益分析
  7. 全国各省二氧化碳排放量统计数据(1995-2016年)
  8. 蝶形算法(Butterfly Algorithm)未更完
  9. 《Objective-C 程序设计(第4版)》图书信息
  10. ssms远程服务器地址,SSMS无法连接到远程服务器,崩溃
  11. Flutter第7天--字体图标,2021年Android开发进阶课程
  12. html圆柱体制作方法,如何制作圆柱体
  13. DEM文件投影/基准面转换出现的问题
  14. 搞一下TDA4 | 03 TDA4 辅助引导加载程序SBL
  15. kali下一句话升级metasploit
  16. Marc数据解析和拼接(java版)
  17. HttpStatus状态详解
  18. 新三级医院信息化建设解决方案
  19. 什么是持续集成的自动化测试
  20. 开店三大分享:咖啡店装修风格怎么确定?门店氛围如何打造?

热门文章

  1. 区块链技术与应用-BTC
  2. C语言实现成绩等级判别
  3. Oracle报错:不是单组分组函数解决
  4. 微信域名防拦截的最新方案,域名防举报投诉原理
  5. Javascript小练习——班级学号点名器
  6. 三相无刷直流电机的控制设计(一)基本硬件电路设计
  7. 从 0 到 1 开发一个聊天通讯 服务 复盘总结
  8. oracle ebcdic 转换,sql - oracle ebcdic sqlldr问题 - 堆栈内存溢出
  9. 基于实践的LabVIEW零基础入门视频教程
  10. SolidWorks Simulation 2014有限元分析培训视频教程