01_C语言基础

内容提要:

1. C语言概述
2. 数据类型、运算符与表达式
3. C语言程序结构

4. VC6.0使用练习

知识详解01:C语言的历史

1. C语言与其它语言比较

汇编语言:

(1).可直接对硬件进行操作,执行效率较高;依赖于计算机硬件,可读性和可移植性较差。

(2).对硬件进行操作,执行效率高,用一串数字代码表示指令,更接近计算机使用的详细操作步骤。依赖于计算机硬件(比如写了一段汇编程序控制51单片机的IO,但是这段程序在AVR上可能起不了啥作用),对于汇编的查看也挺困难

一般高级语言:C++、java、C#等

(1).是在C语言的语法和基本结构上,扩展开发出来的;

(2).硬件操作支持性较差;运行效率不高

2. C语言是贝尔实验室于70年代初发明的.80年代初,美国国家标准化协会(ANSI)制定了ANSI C标准.
3. 后来各个领域都有各自的扩展:如windows下的vc,Linux下的GNU C等

 注意:C语言是基于平台的,如果只有C语言,那什么也干不了

 

知识详解02:C语言的特点

1.概括的说,C语言同时具有汇编语言和高级语言的双重特性;

双重性是指:效率高,可读性较好

2. 具体地说,C语言的主要特点如下:

(1).语言简洁、紧凑,使用方便、灵活,32个关键字、9种控制语句(控制程序的流向),程序形式自由(一件事情可以用多种方式来实现(如:循环)).
(2).运算符丰富(方便程序的设计),34种运算符.
(3).数据类型丰富,数据类型有:整形、实型、字符型、数组、指针、结构体、共用体等.
(4).具有结构化的控制语句,如(if..else、while、switch等)是完全模块化和结构化的语言
(5).模块化:将处理复杂的系统分解成更好理解的可管理的模块的方式
(6).结构化:将一个复杂的求解过程分阶进行,使得每一块更容易理解
(7).允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作.
(8).生成的目标代码质量高,执行效率高,只比汇编程序生成的目标代码效率低10%-20%.
(9).可移植性好、基本上不做修改就能用于各种型 的计算机和各种操作系统.

(10).与linux的结合性好(Ios, windows, UNIX的核心用C语言实现)Linux、UNIX本身就是用C语言来编写的.在Linux上用C语言开发的运行效率非常高,尤其在嵌入式领域 C语言更是开发的首选

知识详解02:关键字

1. C的关键字共有32个

数据类型关键字(12个)

char, short, int, long, float, double, unsigned, signed, struct, union, void, enum

unsigned, signed:是修饰符,int a=125;默认是 signed

void:不可用来定义变量,但可以用它来修饰各种变量

控制语句关键字(12个)

if,else,for,do,while,break,case,continue,default,goto(尽量别使用),return,switch

存储类关键字(4个)(重点介绍,因为上面的几个知识点会在后面介绍)

auto, extern, register, static
extern:可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,可以外部使用

register:修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。

register变量必须是能被CPU所接受的类型。这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。不过,有些机器的寄存器也能存放浮点数。
因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址

return功能:

 终止执行函数,赋值(可选)

将控制权返回给调用函数的下一条语句

那函数的返回值是存在哪儿的/p>

对于四字节的返回值,一般编译器把它放入eax寄存器里,而大于4字节的返回值,一般是放在会在栈中返回地址前的位置。可以肯定的是,应该不是在堆里。

例如:

复合语句一般与其它语句配合使用:

如for( ; ; )  {  }

 

知识详解04:总体结构

 

1. 在C语言中,除实现顺序、选择和循环三种基本结构等9条控制语句外,输入输出操作都由标准库函数(不是C语言的组成部分)来实现.
2. 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数)和若干个其他函数结合而成,或仅由一个main()函数构成.
3. 所有函数既可以放置在同一个源文件里,也可以放置在不同的源文件里

知识详解05:C文件结构

 

1. 一个基于C的软件系统一般由以下文件构成:

 

 

若干个C文件:每个C文件中包含若干个函数.

若干个头文件:每个头文件中包含一些数据结构的定义以及C函数、变量的原型声明.

若干个库文件:库文件是编译后的二进制文件,一般由若干C文件编译后组成,其中包含了若干个函数的可执行代码;这些库文件中的函数可执行代码在连接的时候合并到最终的可执行文件中.

若干个make文件:make文件描述了多个文件中的依赖关系以及生成最终可执行文件或库文件所需要的信息

 

 

知识详解06:数据类型

1. 数据类型

 

 

 

3. 整型数据

 

整型常量的表示方法:十进制;八进制以数字0开头,如0123;十六进制以0x开头,如0x1e

小数点以f结尾

 

实例2:

 

 

大多数编译器会 以上错误,因为十六进制数的转义序列通常范围限制在x0~xff

 

字符变量:

 

用char定义的变量只能存放一个字符常量;

每个字符变量被分配一个字节的内存空间;字符值以ASCII码的形式存放在变量的内存单元中

注意:

a = ‘x’;

a变量中存放的是字符’x’的ASCII :120

即a=120跟a=’x’在本质上是一致的

 

例子1:

上例说明a,b是等价的,谁与谁等价就去看他们内存中的值是否相等。

 

8. 符 常量

 

在C语言中,可以用一个标识符来表示一个常量,称之为符 常量,一般形式为:

 #define 标识符 常量

其中#define是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值.

例:各数据类型的运算:(路径:学生版 1_C语言基础 0_基础代码1_0

 

9. C99中的布尔型

 

bool flag;//定义一个bool型变量,需要包含头文件#include

说明

 

横向箭头,表示必须的转换(有问题);char,short必须转换成int型

上题:signed —> unsigned 

 

12. 强制转换:通过类型转换运算来实现

 

(类型说明符) (表达式)

其功能:把表达式的运算结果强制转换成类型说明符所表示的类型,例如:

 

(float)a; // 把a的值转换为实型

(int)(x+y); // 把x+y的结果值转换为整型

注意:

类型说明符和表达式都必须加括 ;

无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据定义的类型

例子1-类型不改变:

 

 

知识详解07:运算符与表达式

1. 数据在运算中使用的运算符包括:

 

 

运算符的种类、优先级和结合性

 

2. 运算符的种类

 

C语言中运算符和表达式数量之多,在高级语言中是少见的.正是由于丰富的运算符和表达式使C语言功能十分完善

 

3. C语言常用运算符

 

算术运算符 (+、-、*、/、%)

关系运算符 (>、<、==、>=、

逻辑运算符 (!、&&、||)

位运算符   (>、&、|、 ~ 、∧ )

赋值运算符 (=、及其扩展赋值运算符)

条件运算符 ()

逗 运算符  (,)

指针运算符 (*和&)

求字节数运算符(sizeof( ))

强制类型转换运算符((类型))

分量运算符(.->)

下标运算符([])

其他( 如函数调用运算符())

例子:

例子2:

7. 在判断同优先级运算符计算顺序时,要注意结合性,详细的优先级及结合性请参考以下表格
8. 优先级

 

 

 

知识详解08:C语言程序结构

1. C语言支持最基本的三种程序运行结构

 

顺序结构、选择结构、循环结构

2. 顺序结构:程序按顺序执行,不发生跳转.
3. 选择结构:依据是否满足条件,执行相应功能.

if(表达式)语句;

 

if(表达式)语句1  else 语句2;

 

if(表达式1)语句1;

else if(表达式2)语句2;

else 语句n

 

注意:if……else if……….else if…..else,这只能响应一个条件

举例

例子1:判断一个数能否被2整除。(练习if)

例子2:分别判断一个数被2取余的余数。(练习if{ }else{ })

例子3: 分别判断一个数被3取余的余数。(练习if{ }else if{ }else if{ })

4. 条件运算符

(a>b):b;

说明:条件为真,表达式取值a,否则取值b

条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符;因max=(a>b):b;可以去掉括 而写为 max=a>b:b;

和 :是一对运算符,不能分开单独使用.

条件运算符的结合方向是自右至左.

简洁、但容易出错,一般不推荐使用

gcc编译

01_C语言基础

解决这个错误只需要在编译的时候加上-std=c99

6. break语句和continue语句的区别

break语句用于跳出本层循环.

continue用于结束本次循环

 

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113657 人正在系统学习中 相关资源:减压孔板计算软件v1.1免费绿色版-其它代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年3月1日
下一篇 2015年3月2日

相关推荐