C语言知识点复习梳理
C语言知识点复习梳理
C语言的知识点讲完了,接下来就是做一下整理与总结,然后就会进入其他知识的学习。
本文目录如下:
基础知识。
顺序程序设计。
数据类型。
标准输入输出。
进制转换。
选择结构。
循环结构。
数组。
函数。
指针
结构体。
文件。
题外话
这里就是说一些我觉得很基础的问题,无关紧要,但是希望可以解决你的疑惑。
有什么好的C语言书籍推荐吗?
没有什么好的书,新手要么看一些好的文章,要么看视频。书籍只是用来检索知识点复习巩固的,直接看书看不下去的。至于用什么书嘛,谭浩强的就行,大学都用的这个。
学知识是在看到不懂语法怎么办。
你要明白一件事情,你学的新知识,如果实在弄不明白为什么,那就记住他,不要浪费过多的时间在这个上边,因为这些知识经历了数十载的洗礼都没有被推翻,说明他有存在的价值,只不过现在你的知识储备还不够你理解他而已。
不管是现实世界还是计算机世界,现有的所有知识都是人为定义出来的,然后经过大家的推敲觉得这个事情是正确的,然后就会被广泛使用。如果有一天你发现了现实世界某个知识定义的有问题,那么你也可以提出来,在学术界的审判之后,如果觉得你是正确的,那么,你就会被载入史册,并且你提出的事情也会被大家广泛使用。
1. 基础知识
所谓的基础知识,就是我们之后学习C语言、甚至进入编程行业所必须具备的一些前提知识。
举一个栗子:你想认识一个经常偶遇的女生,但是你连说话的勇气都没有,那说不定下次再见到的时候,女生就会挽着别的男生的手了。
这个例子中你去说话就是一个前提条件。编程也是这样,你不了解一些计算机的知识、你电脑上不装编译器(编译器就是敲代码的地方),那你还是不要学了,浪费时间。因为编程是在实际编写代码中成长的,而不是看书成长的。
所以,需要多少基础知识呢?
其实刚开始不是很多,都是一些常识的内容,十八九岁接触过电脑的同学都应该有所了解的知识而已。
首先,为什么学习C语言。
C语言是IT行业人必会的一门语言,C语言可以不用,但是不能不会。当然它的优势可以在文章中找到。
其次,计算机的组成器件。
都要学编程了,不能连最基本的计算机组成都不知道吧。
最后,编译器的安装。
不仅仅是C语言要装编译器,只要你接触编程,不管学什么语言,第一步就是装编译器输出 “Hello World!”。
但是VC6.0原版只针对win7,所以win10使用的时候需要破解,具体安装包怎么下载、安装在我文章中看。
OK,所有的基础知识,都在这篇文章了。
2. 顺序程序设计
顺序程序设计,说白了就是写代码的过程,与人做一件事情的流程很像。人处理一件事情基本都是从前往后做的,代码也是一样,写在前边的代码会被先执行到,后边的代码就会被晚一点执行到。
举一个栗子:一个很经典的人物——小明同学;
小明早晨起床去学校的步骤是:穿衣服—>洗漱—>吃早餐—>出门。
如果有一天小明睡的一脸懵逼,起床之后直接出门了,衣服没穿也没洗漱也没吃早餐,那这就是小明做事情的顺序产生了错误。
所以,人做事情顺序有误就会闹笑话;程序执行的顺序有问题,就会出现我们常说的一个词——Bug。
这一节需要学会的知识:
了解程序应该在哪里编写。
绝大部分编程语言编写的时候,都会有一个指定的程序开始的位置 “main”,也就是编译器执行代码的时候会到 main 中寻找代码来执行。所以我们要把我们的代码写在这个里边。
C程序运行需要的一些前提。
前一问说了,代码要写在 main 里边,那么main要放在哪里呢?文章中就会讲到。
了解编写程序的思路。
也就是说编写代码其实跟人做一件事情是一样的,只不过我们写代码的目的是让程序帮我们循环往复的做同一件事情而已。
OK,所有的知识点,都在这篇文章了。
3. 数据类型
现实世界中有整数、小数、分数、复数等等数据类型;这些数据类型之所以会存在,不是凭空产生的,是一些很伟大的数学家定义出来的,之所以可以被全世界用这么久并且将会一直用下去,是因为他符合人的认知并且切合实际。
编程界也可以看作是一个小世界,那么这个小世界也应该存在着一些数据类型,只不过程序中的数据类型的主体不是人,而是计算机了。由于计算机的存储方式以及存储长度的限制,C语言就会定义一些尽可能切合实际的、大家认可的数据类型来供C语言编写程序过程中使用。这就是数据类型产生的原因。
这一节需要学会的知识:
C语言中的数据类型深层次的定义是什么。
数据类型 = 一类数 + 这类数可以执行的操作。
常用数据类型有哪些,以及他们占用的字节是多少。
整形int占用4字节;浮点型float占用4字节;字符型char占用1字节。
OK,所有的基础知识,都在这篇文章了。
4. 标准输入输出
经过上边的学习你应该会知道任何数据在计算机中的存放形式都是二进制的0/1串,那么当我们想要输出一个文字的时候,总不能把这些0/1串直接输出吧。这个时候就是格式化的作用了,它可以根据用户选择的格式化方式将0/1串转化为用户想要的数据形式。
举一个栗子:用户想要一串英文字符,那么用户就会规定好输出的数据是字符串格式的,此时计算机取到内存中的0/1串的时候,就会将这些0/1串转化为英文字符,然后再输出。
这一节需要学会的知识:
数据在计算机中的存取过程。
存:将用户数据转化为二进制数据。
取:将二进制数据转化为用户数据。
输入输出语法的学习。
pintf(); scanf();putchar();getchar()。
OK,所有的基础知识,都在这篇文章了。
5. 进制转换
现实世界中使用的是十进制,计算机使用是二进制,于是就要学习十进制与二进制之间的转换。
在现实世界中,如果想要描述一个很大的数,我们知道用大一点的单位来描述。计算机也是一样,如果直接用二进制描述一个数据有点繁琐,所以就会产生一些较大的单位,比如:八进制,十六进制。
举一个栗子:现实世界中10000用万做单位可以描述为10万。计算机中二进制的数据 00110001 使用十六进制表示就是 31,确实简洁许多。
这一节需要学会的知识:
学会进制之间的转换。
十进制——二进制之间的转化。
二进制——八进制——十六进制之间的转换。
OK,所有的基础知识,都在这篇文章了。
6. 选择结构
选择结构就是从众多数据中选择出符合需求的数据来进行下一步操作。
举一个栗子:从整个班级的成绩单中选择出 数学成绩>60分的同学,这个过程就是选择结构需要做的事情。
这一节需要学会的知识:
选择结构的基础语法与使用:
要学会两个基本选择结构的使用:if...else 与 switch。
要学会拼接选择的条件:
比如:对于 数学成绩>60,英语成绩>60 。这次的选择就有两个选择条件来控制得到的结果。这两个条件之间的关系可以是多种多样的,我们需要学会按照正确的需求来拼接他们。
OK,所有的基础知识,都在这篇文章了。
7. 循环结构
日常生活中有很多事情都是重复,再重复。在程序编写中也是这个样子,有一些代码或许会被重复执行成千上万遍,这个时候就可以用循环结构去代替一些重复执行的代码,只需要保留一份代码,然后令这份代码循环执行多次即可。
举一个栗子:如果需要输出100个人的姓名,经过上边学习的输出语句可能会有人想着,要不然把输出语句printf写100次就好了;当然这是一种方法,但是,太麻烦了,使用循环结构一行代码就搞定了。
这一节需要学会的知识:
循环结构的语法以及使用:
有三种形式的循环语句,主要记住for循环的用法。while循环理解即可,基本上百分之90的程序for都能解决。
嵌套循环要会使用:
就是在循环结构里边再放循环。
三个循环的差异以及特性:
要知道for循环可以指定循环的次数;while循环次数不确定;do...while会先循环一次在进入判断条件。
循环的中断:
循环有两种结束方式,第一种是 循环次数或者循环条件 不满足了,就停止循环了;还有一种就是强制循环的停止。
强制停止有两种方式:break与continue。
OK,所有的基础知识,都在这篇文章了。
8.数组
随着深入的学习你会发现数据越来越多,有的数据格式相同、并且表达的含义相同。如果可以将这些数据存放在一起统一命名,就会很方便。于是数组的概念就产生了。
数组就是一组数据的集合,并且这个数据集合是有顺序的,集合中的所有数据的数据类型都是相同的。
举一个栗子:班级内全部同学的数学成绩就可以用一个数组存放。
这一节需要学会的知识:
一维数组的定义与使用:
首先需要明白数组的概念,以及一维数组怎么定义以及怎么使用。
二维数组的定义与使用:
同样掌握并且理解二维数组的定义以及使用。
数组的存储原理:
要彻底明白数组在内存中的存储原理以及数组元素的索引原理。
多维数组以及其他数据类型的数组:
数组中的每个元素的数据类型不仅仅可以是数字,也可以是其他的。
字符串以及字符串操作:
当我们将char数组中的每一个位置存放一个字符的时候,这个数组就可以被看作是字符串了。于是针对字符串就会产生一系列的操作。
OK,所有的基础知识,都在这篇文章了。
9. 函数
随着学习的深入,发现main中放的代码越来越多,并且有很多代码重复写了多次,导致main越来越臃肿;于是我们就打算把main中具有相同功能的代码抽取出来,这就叫做函数,给这段函数起一个名字,然后使用的时候只用调用这个函数名字就可以了。
举一个栗子:有一段代码功能是求两个数的和,于是就可以把这段代码抽取出来形成一个函数,起名为sum,然后每次求和的时候调用一下sum就好了。而不用重复的写sum中的代码段。
这一节需要学会的知识:
有关函数的基本知识:
要明白有无返回值的概念,实参形参的概念,main也是一个函数。
函数的简单定义与使用:
函数的简单定义以及使用,就是自己完成一些简单的功能函数。
函数的复杂使用:
嵌套,递归,函数中传递数组参数都是一些难的操作。
函数的一些小细节:
最后了解一下函数的声明式定义,以及全局、局部变量的概念。
OK,所有的基础知识,都在这篇文章了。
10. 指针
指针是C语言的精华所在,指针提供给用户可以直接操作内存地址的功能,其他语言都是屏蔽了这个功能,正是由于指针的存在C语言才变得强大,同时也是因为指针的存在C语言才变得不安全。
举一个栗子:有一个变量 int a = 3; 平常修改数据的方式是使用变量a来操作的,当使用指针的时候,可以直接找到电脑内存中的这个3所在的地址,直接修改,而不用通过变量a。
这一节需要学会的知识:
明白指针的工作原理,以及内存原理:
指针就是地址,地址就是内存中存放实际数据的空间。
区分开指针,指针变量的关系:
指针是地址,指针变量是指向指针的一个变量而已。
另注:取地址是 & 符号,取数据是 * 符号。
使用指针操作简单的数据类型的数据:
使用指针操作int,float,char等简单数据类型。
使用指针操作数组:
使用指针操作一维数组,二维数组。
使用指针在函数之间传递参数:
有了指针之后,函数之间传递数组参数的时候就可以直接把地址传递就可以了。
OK,所有的基础知识,都在这篇文章了。
11. 结构体
接触越来越多的需求之后,你会发现简单的数据类型int,float,char等等根本不够用了,于是就需要使用结构体自定义一些数据类型来使用。
举一个栗子:我们要自定义一个 student 数据类型,但是C语言中并没有这个数据类型,怎么办呢?我们可以通过结构体将基础的数据类型int,char,数组等等组织起来,形成一个我们自定义的数据类型,并且给他起一个名字叫做 student。这就是自定义的一个数据类型。
这一节需要学会的知识:
需要明白什么是结构体,它是什么作用:
结构体可以自定义数据类型,它通过将基础数据类型int,char,float等等数据类型进行人工拼接,形成一个我们需要的数据类型。
结构体怎么定义与使用:
结构体需要先定义出来才可以使用。
结构体类型的数组,指针怎么定义与使用:
结构体定义出来之后,其实和int的使用基本没什么区别,int可以定义数组,那么结构体当然也可以。int可以定义指针,结构体当然也可以吖。
OK,所有的基础知识,都在这篇文章了。
12. 文件
最后,所有的编程语言都是可以操作文件的,因为程序运行起来之后的所有数据都是临时的,如果不存放在文件或者数据库中,那么当程序运行结束之后,数据就会消失,目前没有学习数据库,那么就把数据存放在文件中吧。
这一节需要学会的知识:
计算机中的路径要有所了解:
相对路径,绝对路径要很熟练。
文件打开,关闭,读写模式要知道:
其实文件打开关闭,读写都是一些模板而已,你记住就可以了。
OK,所有的基础知识,都在这篇文章了。
C语言知识点复习梳理的更多相关文章
- 知识点回顾——C语言知识点复习梳理,看看你是不是都完全掌握了
前段时间,我分享了关于C语言的一些必备知识点,感兴趣的朋友可以查看我的往期文章,或是关注公众号c语言进阶之路,查看次条文章,或搜索关键字"编程小白基础必备",就能查看相关文章了. ...
- Spring知识点复习
Spring知识点复习 一.专业术语 侵入式设计 引入框架,对现有的类的结构有影响,即需要实现或继承某些特定类.如:Struts框架 非侵入式设计 引入框架,对现有的类结构没有影响.如:Hiberna ...
- C语言基础复习总结
C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...
- [iOS]C语言知识点系列视频
C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循 ...
- MySQL学习笔记_8_SQL语言基础复习
SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...
- Hybrid App 应用开发中 9 个必备知识点复习(WebView / 调试 等)
前言 我们大前端团队内部 ?每周一练 的知识复习计划继续加油,本篇文章是 <Hybrid APP 混合应用专题> 主题的第二期和第三期的合集. 这一期共整理了 10 个问题,和相应的参考答 ...
- python类,魔术方法等学习&&部分ssti常见操作知识点复习加深
python类学习&&部分ssti常见操作知识点复习加深 在做ssti的模块注入的时候经常觉得自己python基础的薄弱,来学习一下,其实还是要多练习多背. 在python中所有类默认 ...
- C C语言中关键词,以及知识点复习
C语言学习 C语言练习知识点 auto 局部变量(自动储存) break 无条件退出程序最内层循环 case switch语句中选择项 char ...
- [C语言]易错知识点、小知识点复习(1)
1. 计算机只能识别由0和1组成的二进制指令,需要将用高级语言(如C.C++)编写的源程序(.c..cpp)编译成二进制目标文件(.obj).一个程序可以根据需要写在不同的文件里,编译是以文件为单位进 ...
随机推荐
- java安全编码指南之:敏感类的拷贝
目录 简介 一个简单的SensitiveObject SensitiveObject的限制 对SensitiveObject的攻击 解决办法 简介 一般来说class中如果包含了私有的或者敏感的数据的 ...
- 摊牌了!我要手写一个“Spring Boot”
目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping .@PostMapping .@PathVariable 写完了.我也已经将项目开源出来了,地址:https://gi ...
- 基于gis的系统开发,程序运行出现问题 ArcGIS product not specified.You must first bind to an ArcGIS version prior to using any ArcGIS components.
在之前初始化的时候添加下面的一行代码:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);还需要添加一个引 ...
- SQLSERVER如何在子查询中使用ORDER BY
今天在使用公司的一个pager接口的时候,需要传递一个查询的SQL语句,因为我希望他能够在pager对他查询出来的结果排序之前自己先进行排序, 于是在这个SQL中添加了ORDER BY,但是得到的结果 ...
- 【暂咕咕咕】SuffixTree
#include<bits/stdc++.h> using namespace std; const int MAXN=1e6+10; typedef long long ll; char ...
- Docker安装MongoDB、MySQL、Jenkins、Gitlab、Nginx
Docker安装MongoDB.MySQL.Jenkins.Gitlab.Nginx 安装MongoDB 1. 拉取镜像 $ sudo docker pull mongo 2. 运行镜像 $ sudo ...
- vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上
一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...
- Java之线程池解析
线程池 目录 线程池 线程池概述 创建一个线程池并提交线程任务 线程池源码解析 参数认识 构造方法 提交任务 addWorker 执行任务 关闭线程池 线程池概述 什么是线程池 为什么使用线程池 线程 ...
- 【基线检查】(高)基线检查--禁用local-infile选项(访问控制)
(高)基线检查--禁用local-infile选项(访问控制) 描述 禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力 检查提示 -- 加固建议 编辑Mysql配置文 ...
- RHSA-2017:2930-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权、代码执行)
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...