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

时间: 2024-08-27 05:46:56

C语言基础回顾的相关文章

Python源码剖析笔记0 ——C语言基础

python源码剖析笔记0--C语言基础回顾 要分析python源码,C语言的基础不能少,特别是指针和结构体等知识.这篇文章先回顾C语言基础,方便后续代码的阅读. 1 关于ELF文件 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分.一个segment包含一个或多个section,通过readelf命令可以看到完整的section和segment信息.看一个栗子: char pear[40]; static

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

单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式带着大家学习C语言. 1.1 二进制.十进制和十六进制 看似很简单的东西,但是从同学们学习视频的情况来看,很多同学不能彻底明白.这里先简单介绍一些注意事项,然后还是从实验中讲解会比较深刻. 1.十进制就不多说了,逢十进位,一个位有十个值:0-9,我们的生活中到处都是它的身影.二进制就是逢二进位,它的

JavaScript 基础回顾——对象

JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中,对象被定义为无序属性的集合,属性可以是任何类型的值,包括其他对象或函数.函数作为属性值时称为“方法”,即对象的行为. (1)对象常用的内部属性 对象的内部属性是由JavaScript 规范定义的,由运行代码的系统来访问.对象常用的内部属性: prototype        对象        获

20165103学习基础和C语言基础调查

20165103学习基础和C语言基础调查 学习基础和C语言基础调查 技能及其学习经验 在阅读老师做中学系列文章的时候,读到了一句话: 开发极点起因主要是个人兴趣爱好和工作需要. -- 引用自<做中学之五笔输入法实践教程> 回顾自己的不断的学习实践过程中,自己所学得比较好的知识.技能大多都是由于自身的兴趣加上工作需要才一步步逐渐掌握.在最近掌握的几个技能当中,太极拳这项技能勉强可以达到一个较高的水平. 学习经验 入门 首先还是因为对传统武术有一定兴趣,加之可以锻炼身体,便决定加入学校社团,开始学

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

Python基础回顾 认识变量 在学习了之前的Python零基础入门系列[洗礼灵魂,修炼Python](说明一下,这个系列现在回过来再来看这个名字确实好土啊,然后有些知识点感觉还不太精准,后期看如果有时间再调整下,名字的话就这样了,不想改了,要改的话起码得改大半天),相信你已经对Python有了一个大概的了解了.本系列是Python高级,所以先简单回顾一下 变量及变量的作用 变量,顾名思义,变量,那当然是会变的量了.当然这么说感觉有点枯燥,好,先看个例子: 计算某人每天的总支出,已知,早餐6块,

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

02 java语言基础

常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量 较为特

嵌入式 Linux C语言——C语言基础

嵌入式 Linux C语言--C语言基础 一.数据类型 1.基本数据类型 数据类型是创建变量的模型.变量名是连续存储空间的别名,程序中使用变量命名存储空间,通过变量可以使用存储空间.变量所占的内存大小取决于创建变量的数据类型. 2.有符号和无符号 有符号数中数据类型的最高位用于标识数据的符号,最高位为1表示为负数,最高位为0表示为正数. 计算机中有符号数通常使用补码表示,正数的补码为正数本身,负数的补码为负数的绝对值的各位取反后加1. 计算机中无符号数通常使用原码表示,无符号数默认为正数,没有符