C语言知识总结(一)

 

操作系统结构:

 

 

用户模式:应用程序都是运行在用户区域

内核模式:操作系统的内核,设备驱动程序,这些都是在内核模式下运行的

 

大小端与进制关系

 

一个位只能表示0,或者1两种状态,简称bit,一个位是一个bit

一个字节为8个二进制,称为8位,简称BYTE,8个比特是一个字节

一个字为2个字节,简称WORD

两个字为双字,简称DWORD

 

进制:C语言当中0前置表示八进制,0666;用0x前置表示十六进制

 

原码补码和反码

 

 

原码:将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值

+7的原码是00000111

-7的原码是10000111

+0的原码是00000000

-0的原码是10000000

 

 

 

反码:(负数变)

一个数如果值为正,那么反码和原码相同

一个数如果为负,那么符号位为1,其他各位与原码相反

+7的反码00000111

-7的反码11111000

-0的反码11111111

 

 

 

补码:(减法可用加法)

原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。

正数:原码,反码补码都相同

负数:最高位为1,其余各位原码取反,最后对整个数 + 1

 

-7的补码:10000111(原码)

111111000(反码)

11111001(补码)

+0的补码为00000000

-0的补码也是00000000

 

补码符号位不动,其他位求反,最后整个数 + 1,得到原码

用补码进行运算,减法可以通过加法实现

7-6=1

7的补码和-6的补码相加:00000111 + 11111010 = 100000001

进位舍弃后,剩下的00000001就是1的补码

-7+6 = -1

-7的补码和6的补码相加:11111001 + 00000110 = 11111111

11111111是-1的补码

大端对齐和小端对齐

对于arm,intel这种x86构架的复杂指令CPU,整数在内存中是倒着存放的,低地址放低位,高地址放高位,小端对齐

但对于unix服务器的CPU,更多是采用大端对齐的方式存放整数

 

 

 

机器语言:由二进制指令组成,是计算机可直接运行的语言。不可以一只,只能在某种类型的计算机上运行、

汇编语言:

高级语言:可移植

•    源程序: 用高级程序语言写成的程序。

•    目标程序: 源程序的机器语言版本。

•    编译器: 把高级语言写成的源程序转化为机器语言的目标程序的程序

 

 

C语言程序的过程都是由语句组成的。语句是程序的基本书写单位和执行单位,数据及其操作都是用语句的形式描述的。C语言中的语句可分为如下五种:(1)表达式语句(2)声明语句(3)空语句(4)块语句(5)流控制语句

 

 

C源程序的结构特点

1.一个C语言源程序可以由一个或多个源文件组成。

2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

 

在C语言中使用的词汇分为六类:标识符,关键字,运算符,分隔符,常量,注释符等。

从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构

C语言的缺陷:

C语言不是强类型语言,缺少对字符串和记录的处理,缺少运行期间检查,为了追求效率,运行期间,c不检查诸如数组越界之类的错误。

C中很多地方容易使得程序员产生误解,诸如运算符优先级规则,c一些地方定义不完备,执行结果因编译器不同而改变。

注意细节:变量定义时,一定要初始化,不要有多余的变量,定义了就要使用,不使用就不定义

 

1.Include头文件。在C语言当中,任何库函数调用都需要提前包含头文件

<头文件>,代表让C语言编译器去系统目录下寻找相关的头文件

“头文件”,代表让C语言编译器去用户当前目录下寻找相关头文件

2.return:一个函数遇到return就终止(生命周期到了)

3.编译过程:.c文件->预编译->编译->链接(库)->可执行程序

Gcc –E –o a.e  a.c

预编译a.c文件,生成的目标文件名为a.e

预编译是将include包含的头文件内容替换到C文件中中,同时将代码中没用的注释部分删除

-s汇编将c语言转化为汇编语言,-c编译将代码编译为二进制的机器指令,链接 Gcc没有任何参数,代表就是链接

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值