C语言的基础知识一

C 语言的发展颇为有趣。它的原型 ALGOL 60 语言。(也被称为 A 语言)

1963 年,剑桥大学将 A 语言发展成为 CPL(Combined Programming Language)语言。 1967 年,剑桥大学的 Matin Richards 对 CPL 语言进行了简化,于是产生了 BCPL 语言。 1970 年,美国贝尔实验室的 Ken Thompson 将 BCPL 进行了修改,并为它起了一个有趣的名字“B 语言”。意思 是将 CPL 语言煮干,提炼出它的精华。并且他用 B 语言写了第一个UNIX 操作系统。 而在 1973 年,B 语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE 在 B 语言的基础上最终设计出了 一种新的语言,他取了 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。

C 语言目前有好几个标准: 规定的一些语法 目前主流的标准是:C89/C90 M4 阶段,keil 软件是可以支持 C99。

 C 语言的特点:

1. 可以对位、字节、地址进行操作,可以访问硬件时间里也有单位的分类:时,分,秒,年,月,日

机器的存储是由一个最小单位组成的,一个位(bit)

1 字节(byte) = 8 bit       1 k = 1024 字节        1M = 1024k

地址:要去公司面试,需要找到这个公司的现有地址,我们先要去找到某个变量或者函数所在的位置也是要找到相应的地址。

数据类型丰富主要分为以下几大的数据类型:

1. 基本数据类型:字符型,整型,实型

2. 构造数据类型:结构体,数组,共用体,枚举

3. 空类型(void) -- void * -- 万能指针

运算符丰富,有 34 种运算符 运算符就是规定了数据和数据之间进行运算的某种规则,C 语言里有 34 种预算符,就方便我们后面去处理相应的数据

4. 结构式语言

C 语言里的结构话的程序分为以下几大类:

1. 顺序结构 -- C 语言总是从上往下执行

2. 选择结构 -- 应用于在需要判断选择的时候

3. 循环结构 -- 当要做重复性的事情的时候

4. 跳转语句 -- 可以直接到达某个地方为了整个程序的模块化,为了后面程序编写更有逻辑以及好修改

5. 灵活性,程序设计自由度大

C 语言的整体的编程要求并不严格,linux 下的 shell 编程非常严格。C 语言的写法有很多,不同人写出 来的代码可能完全不一样但是最后实现的功能完全一样。 在语法检查时由于没有严格导致后面可能会出现的问题:内存泄露,内存越界

6. 高效性

很接近于底层语言的使用,一般只比汇编语言低 10%-20%

7. 可移植性好

基本不需要经过什么修改就可以直接移植到别的平台上

标准 C 和嵌入式 C 的区别

语法上基本没有任何的区别,嵌入式 C 是要求针对于硬件上所拥有的资源来进行操作。

C 语言的编程机制

C 语言编写好的文件并不是直接可以进行运行操作的,需要经过以下四个步骤:

1. 预处理 -- 宏定义的展开 / 条件编译 / 注释 // #define #ifdef / #else /#endif

2. 编译 -- 帮助我们检查有没有语法错误

3. 汇编 -- 把汇编语言转化为机器语言

4. 链接 -- 把一些动态库或者静态库添加到执行程序里,添加一些

Windows 系统下的静态库: 以.lib 结尾的,是在程序链接阶段就加进去了 动态库: 以.dll 结尾的,是在程序运行的时候才加进去

C 语言的编程流程

我们使用 C 语言进行编程时,通常有一个基本流程:

比如要做一个智能锁的项目

1. 明确程序目标 要知道实现什么功能:指纹开锁,密码开锁,刷卡开锁,还可以和云端连接 要控制指纹模块,按键模块,RFID 卡模块,WIFI 模块

2. 设计程序

需要用到的一些算法,驱动代码的时序的设计,整体的程序框架

3. 编写代码

把前面两步构建好的想法按照 C 语言的语法写下来

4. 编译和链接

使用一些软件工具帮助我们去检查当前的代码有没有语法上的错误并且生成相应的可执行程序。

5. 运行程序

看运行的效果有没有达到预期的目标

6. 调试程序

看相应的代码是不是可以按照预定的方向执行,修改这些没有达到预期的 bug

7. 维护和更新

当前这个程序可能在你的这个环境下可以运行,换了别的环境可能就出问题了,需要添加新的功能

C 语言的常见问题

1. 空格 int a

变量和变量之间或者说在声明时的关键字和标识符之间需要以空格来分割开不同的地方

2. 空行

一般是一个模块和另一个模块之间需要以空行来分割开

“”,{},()要成对出现

While(1) { If(a == 10) { For(i = 1 , i < 9 , i++) { } } }

3. 规范编写,代码是自动对齐

在编写代码的时候需要语句和语句之间对齐 一般而言用的是 table 键对齐

4. 语句的关键部分是不识别中文符号

,。”“()都是 C 语言里可以编译的部分无法被识别到的

在双引号括起来的部分除外” () ”

可以看当前这个符号占了几列

5. 凌乱的代码,如何对齐 先 shit + table 全部移到最左边 再用 table 键对齐

6. 编译时信息处理方法

在编译的时候如果错误就会给你报错:ERROR:错误是一定需要处理的,错误处理的方式,先找第一个错误,改完一个错误马上编译一次

WARNING:警告不一定需要去管,警告是不影响程序的正常运行的 再改完所有错误以后最好再把警告处理一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值