C复习1基础

      本菜鸟是大四快毕业的学生,最近不知道怎么了特别迷茫,而且时而就不想学习了,感觉自己学过的东西很多但是很多都不能学以致用,可能还是代码量少了吧。无论是为了以后找工作还是为了回首一下大学生活,我觉得把自己大学学过的东西全部都复习一遍都很有意义,今天就首先复习c语言的知识吧。

    c语言是学习编程的第一门语言,大一学的当时用的编程软件是VC++6.0,后来在vs和gcc上也有编过,个人比较喜欢gcc,因为在gcc内置的库函数比较全一个Linuxc函数手册就能查完而且不懂还阔以man一下,vc上面进行一些高级编程的时候函数库在win api里面很难找,也可能是我太菜了吧,O(∩_∩)O哈哈~

 先说说源代码到程序的步骤吧,
和python这种解释性语言不一样,c语言需要经过编译才能执行,有3个步骤
1,预处理;2,编译;3,汇编;4,链接;
Linux下C语言程序的编译过程
而且生成的可执行文件还不是程序,程序的动态运行在内存中的,程序在内存中的的虚拟内存图如下图:
C复习1基础

C 程序的内存空间布局

1,关键字 
一门语言最开始的就是单词和语法了,c语言也不例外,c语言一共有32个关键字,在变量命名时变量名不能与关键字同名。
auto 声明自动变量
short 声明短整型变量或函数
int 声明整型变量或函数
long 声明长整型变量或函数
float 声明浮点型变量或函数
double 声明双精度变量或函数
char 声明字符型变量或函数
struct 声明结构体变量或函数
union 声明共用数据类型
enum 声明枚举类型
typedef 用以给数据类型取别名
const 声明只读变量
unsigned 声明无符号类型变量或函数
signed 声明有符号类型变量或函数
extern 声明变量是在其他文件正声明
register 声明寄存器变量
static 声明静态变量
volatile 说明变量在程序执行中可被隐含地改变
void 声明函数无返回值或无参数,声明无类型指针
if 条件语句
else 条件语句否定分支(与 if 连用)
switch 用于开关语句
case 开关语句分支
for 一种循环语句
do 循环语句的循环体
while 循环语句的循环条件
goto 无条件跳转语句
continue 结束当前循环,开始下一轮循环
break 跳出当前循环
default 开关语句中的“其他”分支
sizeof 计算数据类型长度
return 子程序返回语句(可以带参数,也可不带参数)循环条件

   上面关键字的描述很少,但是每个关键字都有很多需要注意的地方,下面这篇博文比较详细

C语言关键字详解

2,变量
程序运行时其值不可以改变的量称为常量,const修饰的是变量只是其值不能通过指定的方式改变而已注意区别,常量包括直接常量和符号常量。
程序运行时值可以改变的量称为变量,变量应该有变量名、变量值、存储单元,使用之前必须先定义。

C语言常量与变量
 3,数据类型
  c语言的数据类型包含基本类型、构造类型、指针类型、空类型。基本类型的数值里面需要注意各个字节的长度,还有有时候会遇到大小端问题。
C语言基本数据类型简介
c语言大小端
 4,运算符与表达式
 数据运算有的算术,赋值,逻辑,关系,条件判断以及自增自减运算和基于二进制的位运算。下面这位网友的博文比较详细。
C语言运算符与表达式
 运算符是有优先级的,感觉在考"解释这是什么指针"的时候就是在考运算符的优先级。
C语言运算符的优先级和结合性一览表
 5,程序的3种基本结构
顺序 、选择(if, switch)、循环(for, while)。
6,函数
函数中需要注意的就是一般形参改变不会改变原本的值,而需要改变实参值时就要考虑用指针,通过地址改实参里面的值,而c++中可以用引用,但是这时又要区别指针和引用的区别了,还有就是c语言是没有引用的概念的,&符号只是取地址,*符号获取地址里面的值。
说到函数就要说一下函数回调了,函数回调就是由别人的函数运行期间来回调你实现的函数。下面博客详细说明了。C语言回调函数的定义和写法
 (⊙o⊙)…第一次写思路感觉一点都不清晰,感觉很多东西都很基础而且要写又太多了,所以很多都找了网上的博文,下一篇开始认真的多写一些