C语言基础回顾
第一章 C语言基础
1. C语言编译过程
预处理:宏替换、条件编译、头文件包含、特殊符号
编译、优化:翻译并优化成等价的中间代码表示或汇编代码
汇编:生成目标文件,及与源程序等效的目标的机器语言代码,至少由代码段和数据段组成
链接:将有关的目标文件彼此相连接,分为静态链接和动态链接
2. 编码规范
适当的注释;
“{”和“}”独占一行并使一对对齐,“{}”之内的代码向右缩进4个空格;if、for、while等关键字后留一个空格再跟“(”,但函数紧跟;
“(”后向紧跟;“)”、“,”、“;”前向紧跟;
“,”后留空格;“;”不是一行结束时留空格;
二元操作符两边适当加空格,但单目运算符及“[ ]”、“.”、“->”要紧跟;
当一行代码太长时适当换行
3. 关键字
数据类型:int、char、float、double、short、long、void、signed、unsigned、enum(枚举类型)、struct(结构体)、union(联合体)、const(只读变量)、typedef(类型定义)、volatile(多为嵌入式开发用,说明这个变量可被隐含的改变,这样优化器在每次用这个变量时都会重新读取这个变量而不会使用寄存器里的值)
存储类别:auto(自动)、static(静态、内部)、register(寄存器)、extern(外部)
语句命令字:break(跳出switch和本层循环)、case、continue(跳出本次循环转入下一次循环的条件判断)、default、do、else、for、goto、if、renturn、switch、while
运算符:sizeof
4. 标识符
以字母或“_”开头,可以由字母、数字、“_”组成
5. 常量
常量后可以加“u”、“U”、“L”、“l”修饰;八进制数以“0”开头;十六进制以“0x”、“0X”开头;符号常量用单引号,字符串常量用双引号,并注意字符串常量所占空间为字符串长度加一字节
6. 数据类型
TC/Byte VC/Byte
[signed] int 2 4
unsigned [int] 2 4
[signed] short [int] 2 2
unsigned short [int] 2 2
[signed] long [int] 4 4
unsigned long [int] 4 4
float 4 4
double 8 8
char 1 1
signed char 1 1
unsigned char 1 1
typedef:typedef 类型名 新名 ,typedef在编译时执行而宏在预处理时执行
typedef声明数组类型:如typedef int arr[10],这样“arr a;”和“int a[10];”等效
枚举类型:
enum 枚举名
{
标识符[=符号常量],
……
标识符[=符号常量],
}[变量名];
共用体:
union 共用提名
{
数据类型 标识符;
……
数据类型 标识符;
}[变量名];
7. 变量的存储类型
局部变量:在函数中(包括main函数)或在复合语句中定义的变量,只在这个函数或复合语句中才起作用,形参属此类,也称内部变量
全局变量:在函数外定义的变量,在定义时候到本源文件结束起作用,若全局变量和局部变量重名(同一函数中变量不可同名,但不同函数可以),则局部变量起作用,同名全局变量暂不起作用
静态存储变量:存储在静态存储区,在编译时分配空间和赋初值,没有初值赋0,包括全局变量和局部静态变量(和自动变量对应,用static)
动态存储变量:存储在动态存储区,函数调用时分配空间和赋初值,没有初值则为随机数,包括形参和自动变量(定是局部变量,用auto)
第二章 运算符与表达式
1. 运算符的优先级
1:( ) [ ] -> .
2:! ~ ++ -- - + * & (类型符) sizeof (所有单目运算符)
3:* / %
4:+ -
5:<< >>
6:< <= > >=
7:== !=
8:&
9:^
10:|
11:&&
12:||
13:? :
14:= += -= *= /= %= >>= <<= &= |= ^= (所有赋值运算符)
15:,
其中只有赋值运算符、条件运算符(三目)、单目运算符是右结合
2. 表达式的值
赋值表达式:给变量赋的值
条件运算符:根据“?”前表达式选择“:”两边的一个表达式的值
逗号表达式:逗号分隔的最后一个表达式的值
第三章 函数
1. 内部、外部函数
用static可以声明(定义)内部函数,此种函数只能被同一源文件的函数调用,此时就不用担心与其他文件函数同名;用extern可以声明(定义)外部函数,其中extern可省
2. main函数的参数
main(int argc, char *argv[]),调用main时在命令行中输入“filename str1 str2……”,则argc为包括filename在内的参数个数,argv指向str1、str2 ……
第四章 指针
1. 指向字符串的指针
char *p=”Hello world.”; 中p指向字符串常量,并非把字符串赋给p指向的内存
2. 几种定义
int *p; 指向整型的指针
int (*p)[n]; 指向n长度一维数组的指针
int *p[n]; n长度指向整型的指针数组
int (*p)(); 指向函数的指针
int *p(); 整型指针型函数,函数返回值是整型指针
int **p; 二级指针,指向指向整型指针的指针,和指向一维数组的指针不同
3. “.”和“->”的区别
“.”是结构体或联合体用来调出成员的,与结构体变量或联合体变量一起用,而“->”和指向结构体变量或联合体变量的指针一起用,他们不能互换(加“*”时才可以)
4. const和指针
(const int *)和(int *)并非同一种类型,后者可自动类型转化到前者,前者不可自动类型转化到后者。注意(const int *)和(int * const)的区别,前者是指向常量的指针,后者为指向变量的常量指针。(const int *)变量不可通过解引用改变所指内容,但可以改变该变量的值。(int * const)变量不可改变,但可以改变所指内容。通常将函数参数声明成const型或指向cosnt指针,避免改变参数的值或它所指的值。
第五章 预处理
1. 预处理的功能
宏定义、文件包含、条件编译,都带有“#”
2. 实例
#define,宏定义,带参数时注意加“()”,和#undef配合
#include,文件包含,接“<>”时表示只在标准库中查找,接“”””时,先在当前目录找找不到再到标准库
#if ……
……
#elif
……
#else
……
#edif
#ifdef:当被宏定义时
#ifndef:当未被宏定义时
#line:#line 行号 [“文件名”]
#pragma:参数为下面三种
message,在编译信息输出窗口中输出相应信息
code,设置程序中函数代码存放的代码段
once,保证头文件被编译一次
3. 特殊宏定义
__LINE__、__FILE__、__DATE__、__TIME__、__STDC__、__cplusplus 等
第六章 常用算法
1. 排序
2. 查找
3. 数据压缩
参考文献
C 语言开发实战宝典/ 刘彬彬,李伟明等编著. —北京:清华大学出版社,2011.1
C 语言程序设计教程/ 李玲,桂玮珍,刘莲英编著. —北京:人民邮电出版社,2005.2
C函数速查手册/ 尹德淳编著. —北京:人民邮电出版社,2009.4
C 语言高级程序设计/ 陈天洲编著. —北京:人民邮电出版社,2002.12
C语言算法速查手册/ 程晓旭等编著. —北京:人民邮电出版社,2009.10
C语言编程之道/ 刘彬彬,孙秀梅,李鑫编著. —北京:人民邮电出版社,2011.3
C语言基础回顾的更多相关文章
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
- JavaScript基础回顾一(类型、值和变量)
请看代码并思考输出结果 var scope = 'global'; function f(){ console.log(scope); var scope = 'local'; console.log ...
- python高级(1)—— 基础回顾1
Python基础回顾 认识变量 在学习了之前的Python零基础入门系列[洗礼灵魂,修炼Python](说明一下,这个系列现在回过来再来看这个名字确实好土啊,然后有些知识点感觉还不太精准,后期看如果有 ...
- 单片机教程4.C语言基础以及流水灯的实现
单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式 ...
- goweb-go语言基础
go语言基础 虽然这本书是讲goweb,但还是吧go语言基础过了一遍,由于我之前已经对go语言基础做了一遍系统的学习,这里就当简单回顾一下,不再写过多笔记了,之前的写的博客都有基础知识,O(∩_∩)O ...
- Java基础回顾_第一部分
Java基础回顾 基本数据类型 数值类型 什么是字节? 位(bit):是计算机中数据的最小单位 字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示 1 B = 8 bit 字符: ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...
随机推荐
- .net 附加W3wp进程
步骤:1.鼠标右键点击application项目中的web,找到属性 2.修改web服务器地址(如果使用localhost报错,则http://电脑IP/): 3.在本地iis中找到你部署的网站,点击 ...
- 通过npm安装 Cordova
通过npm安装 Cordova 首先请确保你在本地已经安装了NodeJS(可以调用npm命令), 并且是联网状态的.如果不知道如何安装NodeJS, 请参考 ”四步完成NodeJS安装,配置和测试”. ...
- Format函数
Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Format(const Format ...
- 【接口】【USB】1.学习笔记
1.USB的优点: 可以热插拔,即插上后可以自动识别: 系统总线供电,USB共有四根线,一根电源线,一根地线,一根D+线,一根D-线,D+和D-线是差分输入线: 可以支持多种设备,且扩展容易,通过HU ...
- Coding源码学习第三部分(EaseStartView.m)
首先接上篇的要做一个NSEnumerator 类的延展阅读. 枚举(NSEnumerator) (1)依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口. ( ...
- Android中的布局动画
简介 布局动画是给布局的动画,会影响到布局中子对象 使用方法 给布局添加动画效果: 先找到要设置的layout的id,然后创建布局动画,创建一个LayoutAnimationController,并把 ...
- 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)
前一段时间学习netcore的时候解除到了docker,感觉真是不错的技术.百度了不少教程.因为我用windows就下载安装了一下试试.但是没有安装成功,才发现 需要安装virtualbox虚拟机,与 ...
- MFC-01-Chapter01:Hello,MFC---1.1 Windows 编程模型
1.1 Windows编程模型 为传统的操作系统编写的程序使用的是过程化模型,即程序从头到尾按顺序执行.例如C程序,从main函数入口开始执行,中间调用不同的函数一直到程序结束返回,这种过程是程序本身 ...
- VisualSVN5.0.1补丁原创发布
VisualSVN5.0.1补丁原创发布
- spring入门教程——笔记
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...