C语言学习笔记【Chapter1】

时间:2022-12-25 10:29:35

【新知识累积】

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.接下来一周破事有点多啊啊哈哈哈