【新知识累积】
1.1 入门知识
- C语言程序:由 函数 和 变量(用于存储计算过程中使用的值)
- main函数: 是特殊的,通常在main函数中调用其他的函数来完成工作
- 调用函数:使用 函数名 + (参数表)
- 换行只能使用: \n
1.2 变量与算术表达式
- 多行注释/* …………………………*/
- 所有的变量都需要先申明再使用,(申明的位置通常在函数的起始处,用于说明变量的属性)
- 循环体后面的结构可以是 {} 中的的语句块,也可以是没有 {} 单条语句;
- 整数的除法将执行舍位操作,比如:5/9的结果就是0
- 格式化输出:需要注意的是,各个 % 必须要与之后的参数合理对应以及匹配
e.g.
example 1:printf("%3d %6d\m", a, b)
这里的意思就是a要占3个字宽,b要占6个字宽,且都是整型参数;
example 2:printf("%3.0f %6.1f\n", a, b)
这里的a是至少占3个字宽,且不带小数点以及小数部分,b则保留一位小数,且ab的类型都是float类型的
1.3 for语句
- 这个简单,是while语句的推广,但是比while语句更加的紧凑
1.4 符号常量
- 这是针对那些幻数(Magic Number)的,这些数字在程序中显得莫名其妙的,来历不明,因此用大写的英文单词为其命名,以赋予其一些易于程序员辨识的意义。
1.5字符输入/输出
-
getchar()/putchar()
函数
-getchar()函数用于从文本中读入下一个字符,且将其作为结果值返回
-putchar()函数将变量c的内容以字符型是打印出来,基本上类似与printf()函数
1.5.1文件复制
- 字符:在机器内部都是以 位 的形式存储,char是专门用来存储这种字符型数据的类型
- EOF(end of file):
在linux下:执行ctrl+d
在windows下:执行ctrl+z然后再回车
1.5.2字符计数
- 单独的分号;成为一个空语句,比如在for语句中的条件中已经执行了该循环的全部操作,那么只需要在该语句后面接一个
;
就好啦 - while语句和for语句的有点之一就是在执行循环体之前 就已经对条件进行了测试
1.5.3行计数
- 缩进:可以表示语句之间的控制 关系
1.5.4单词计数
逻辑运算符 &&比||的优先级高
1.6数组
- if-else中的两条语句有且仅有一条语句会被执行
- 多路判断可以使用if-else的嵌套(这种形式中,各个条件从前往后依次求值,知道满足某个条件 )
- 注意用缩进形式体现结构的层次
1.7函数
- 函数定义可以出现在一个源文件或者多个源文件里面,但是同一个函数不能分割放在不同的多个文件里
- 这里形式参数就是只在本函数中有效存在
- 一般在函数原型中就要指明参数名,比如
int power(int m, int n)
这样的,
1.8参数-传值调用
- 所有的函数参数都是“通过值”传递的,被调用的函数不能直接修改主调函数中变量的值,而只是修改其私有的临时副本的值,这样利大于弊,在被调用函数中国,参数可以看作是便于初始化的局部变量,这样的话,需要额外使用的变量就会变少,这样程序就可以更加紧凑简洁。
1.9字符数组
- \0(空字符) 用以标志字符串的结束
1.10外部变量与作用域
- 内部变量、局部变量在C语言中被叫做自动变量(函数执行是自动消失,自动释放内存)
- 外部变量:定义在所有函数之外,只能定义一次,编译器为其分配存储单元,若有函数要使用外部变量,需要先用
extern
语句进行显式得到申明,也可以进行隐式的申明(前提是外部变量是在函数之前出现的) -
extern
语句还可以简历两个文件中的某个变量的与其定义之间的联系,这也就引出了头文件的概念,头文件中存放了变量以及函数的extern申明 - 有的函数参数部分是void,这就意味着该函数的参数表为空,因此用void进行显示申明
- 定义和申明不一样
定义:表示创建变量并且分配存储单元;
声明:只是说明变量的性质,但是不进行存储单元的分配。 - 不要过分的依赖外部变量,会使得程序中的数据之间的关系变得模糊不清
——————————————————————华丽的分割线——————————————————————
【反思与总结】
基本上是算看完第一章了,但是也有一些问题:
1.我在ubuntu16.04随便写了几个程序,但是执行的时候,EOF用的是 CTRL+Z的方法,这样的结果就是没有打印该统计出来的东西,这时什么问题呢?
2.反思一下第一章的学习:
2.1容易受干扰,不专一;
2.2因为第一个原因,后面的代码没有办法得到验证;
2.3后面必须得集中精力搞
3.接下来一周破事有点多啊啊哈哈哈