第一章 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语言基础回顾的更多相关文章

  1. JavaScript 基础回顾——对象

    JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...

  2. JavaScript基础回顾一(类型、值和变量)

    请看代码并思考输出结果 var scope = 'global'; function f(){ console.log(scope); var scope = 'local'; console.log ...

  3. python高级(1)—— 基础回顾1

    Python基础回顾 认识变量 在学习了之前的Python零基础入门系列[洗礼灵魂,修炼Python](说明一下,这个系列现在回过来再来看这个名字确实好土啊,然后有些知识点感觉还不太精准,后期看如果有 ...

  4. 单片机教程4.C语言基础以及流水灯的实现

    单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式 ...

  5. goweb-go语言基础

    go语言基础 虽然这本书是讲goweb,但还是吧go语言基础过了一遍,由于我之前已经对go语言基础做了一遍系统的学习,这里就当简单回顾一下,不再写过多笔记了,之前的写的博客都有基础知识,O(∩_∩)O ...

  6. Java基础回顾_第一部分

    Java基础回顾 基本数据类型 数值类型 什么是字节? 位(bit):是计算机中数据的最小单位 字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示 1 B = 8 bit 字符: ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  9. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

随机推荐

  1. CSS3回执特殊图形

  2. Topcoder SRM558 1000 SurroundingGame

    题意:给定一个网格,每个网格有选取代价和占据收益.每个点被占据,需要满足以下两个条件至少一个条件:1.被选取  2.邻近方格都被选取(有公共边被称为邻近)  不一定要占据所有方格,求最大收益. 第一直 ...

  3. [css]零散的重构知识

    1.不建议这样写 font-family:"微软雅黑"; 建议 font-family:Microsoft YaHei; 因为有些网站不兼容中文(GB2312)的字符

  4. 【 2013 Multi-University Training Contest 8 】

    HDU 4678 Mine 对于每个空白区域,求SG值. 最后异或起来等于0,先手必败. #pragma comment(linker,"/STACK:102400000,102400000 ...

  5. μC/OS-Ⅲ系统中的任务种类及基本状态

    在μC/OS-Ⅲ系统中,任务自身一共有五种状态. 1.休眠态 调用函数OSTaskCreate()创建任务后,任务就可以接受μC/OS-Ⅲ的管理.处于休眠态的任务代码实际上已经写入代码空间中了,但是μ ...

  6. UnityContainer 实现DI

    DI(依赖注入) 的方式有很多种: 接口注入,属性注入,构造注入等.DI主要是为了实现代码的松耦合,方便代码的维护和扩展.(其实都是扯淡). 来说说我为啥要使用DI吧.公司有个项目,需要我一个人完成( ...

  7. java.net.UnknownHostException: Unable to resolve host "api102.meishi.cc": No address associated with hostname

    有三个原因: 清单文件Mei加网络访问权限 在主线程中执行了耗操作 你没开wifi

  8. [小菜随笔]关于monkey报错日志分析

    今天小菜在一个测试群内看到群友发出一个monkey的报错信息,其实是一个很简单的报错 个人觉得monkey虽然操作起来比较简易,但其实查看日志分析日志也是很重要的环节,如果对错误分析不够详细,就容易误 ...

  9. Enterprise Architect 学习 之 活动图

    UML中,活动图用来展示活动的顺序.显示了从起始点到终点的工作流,描述了活动图中存在于事件进程的判断路径.活动图可以用来详细阐述某些活动执行中发生并行处理的情况.活动图对业务建模也比较有用,用来详细描 ...

  10. 黄金点游戏(js+css)

    一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0 ...