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 数据库 ...
随机推荐
- checkbox
$(document).ready(function(){ var page_id = {/$page_id/}; var location_id = {/$location_id/}; var lo ...
- C++小项目:directx11图形程序(七):modelclass
模型类是世界空间中的表示物体的类,那么他的所做的事就是加载模型,移动模型,渲染模型 modelclass.h #pragma once #include <d3d11.h> #includ ...
- wx jssdk
public static Dictionary<string,string> jsstr(string url) { //noncestr ); //timestamp TimeSpan ...
- NFS网络文件系统安装配置
简介 NFS(Network File System)FS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络共享数据.客户端用mount命令把远程的NFS文件系统挂载到本地即可,操 ...
- POJ 题目3661 Running(区间DP)
Running Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5652 Accepted: 2128 Descripti ...
- 横向滑动的GridView
思路: GridView行数设置为一行,外面套一个HorizontalScrollView,代码中设置GridView宽度 xml代码 <HorizontalScrollView android ...
- 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观
整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049
- Go! new Hello World, 我的第一个Go程序
以下语句摘自百度百科: Go语言是谷歌2009发布的第二款开源编程语言. Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进 ...
- Spark的WorkCount的例子
之前为了搭建scala开发spark的环境花了几天的时间,终于搞定了,具体可以参考:http://www.cnblogs.com/ljy2013/p/4964201.html .下面就是用一个示例 ...
- 谈谈黑客攻防技术的成长规律(aullik5)
黑莓末路 昨晚听FM里谈到了RIM这家公司,有分析师认为它需要很悲催的裁员90%,才能保证活下去.这是一个意料之中,但又有点兔死狐悲的消息.可能在不久的将来,RIM这家公司就会走到尽头,或被收购,或申 ...