前言:
为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。
1 . 简述
工作这段时间虽然也调试一些程序,但很多时候还是停留在了模块,基础之上,缺乏系统的锻炼,同时工作中的定位现在更多是硬件,感觉慢慢的还是要转到嵌入式软件上来,才会有一些竞争力,能够了解底层的硬件,也明白程序的运行。硬件如果做得比较专,比较深,也是有很强的竞争力,反观自己,更多是打基础,学习一些跟产品设计相关的知识,以后也就想在有余力的时候,再把 C 语言系统的复习学习一下,过去的知识过于零散,进一步地整理梳理一番。毕业快两年了,自己感觉积累还是过于单薄,这些日子,也更多是学生到工作者的过渡,希望未来自己在这个行业有一些积累,形成属于自己的竞争力。
2. 32个关键字
编号关键字 | 解释 | |
---|---|---|
1 | auto | 声明自动变量,缺省时编译器一般默认为 auto |
2 | int | 声明整形变量 |
3 | double | 声明双精度变量 |
4 | long | 声明长整型变量 |
5 | char | 声明字符型变量 |
6 | float | 声明浮点型变量 |
7 | short | 声明短整型变量 |
8 | signed | 声明有符号型变量 |
9 | unsigned | 声明无符号型变量 |
10 | struct | 声明结构体变量 |
11 | union | 声明联合性变量 |
12 | enum | 声明枚举型变量 |
13 | static | 声明静态变量 |
14 | switch | 用于开关语句 |
15 | case | 开关语句分支 |
16 | default | 开关语句中的“其他”分支 |
17 | break | 跳出当前循环 |
18 | register | 声明寄存器变量 |
19 | const | 声明只读变量 |
20 | volatile | 说明变量在程序执行过程中可被隐含地改变 |
21 | typedef | 用于给数据类型起别名 |
22 | extern | 声明变量在其他文件被声明(也可以看做引用变量) |
23 | return | 子程序返回语句(可以带参数,也可以不带) |
24 | void | 声明函数无返回值或无参数。声明空指针类型 |
25 | continue | 结束当前循环,进入下一轮循环 |
26 | do | 循环语句的循环体 |
27 | while | 循环语句的循环条件 |
28 | if | 条件语句 |
29 | else | 条件语句的否定分支(与if连用) |
30 | for | 一种循环语句 |
31 | goto | 无条件跳转语句 |
32 | sizeof | 计算对象所占用内存空间的大小 |
分类 | 组成 |
---|---|
不常见的 | auto,register,volatile,goto |
存储相关 | const,extern,register,volatile,static,auto,signed,unsigned |
数据类型 | char,short,int,float,long,double,struct,union,enum,void |
逻辑控制 | if,else,for,while,do,break,continue,return,default,switch,case,goto |
特殊使用 | sizeof,typedef |
3. 基本概念浅析
3.1 定义
定义就是(编译器)创建一个对象,并且为这个对象分配一块内存,给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
3.2 声明
第一重定义:告诉编译器,这个名字已经匹配到一块内存上了,下面的代码用到的变量或对象是在别的地方定义的。(声明可以出现很多次)
第二重定义:告诉编译器,这个名字我先预定了,别的地方不能再用它来做变量名或者对象名。(比如:占座,占了座本人却没有在座位上,且不允许别人坐,就是这么霸道 …)
Eg:
函数参数的声明:
void fun(int i,char c)
3.3 区别
定义是创建了对象并且为这个对象分配了内存;声明没有分配内存。
参考书籍:
- 《C语言深度剖析》
- VS2017使用教程(使用VS2017编写C语言程序)