嵌入式C语言学习(一)

一、计算机语言发展

计算机语言从最初的机器语言发展到现在主要分为三个阶段:机器语言、汇编语言、高级语言。

1. 机器语言

机器语言是计算机可以直接执行的二进制指令。在计算机发展的早期阶段,程序员需要使用机器语言编写代码,每个指令都需要以二进制形式表示。机器语言非常底层,对于人类来说很难理解和编写。

2. 汇编语言

为了简化程序员的编程工作,汇编语言应运而生。汇编语言使用助记符和符号来代替机器语言中的二进制指令,使得编程更加容易理解和编写。程序员编写的汇编语言代码会通过汇编器转换成机器语言代码,然后可以在计算机上运行。

3. 高级语言

高级语言是相对于机器语言和汇编语言而言的更加抽象的编程语言。高级语言使用更接近自然语言的语法和结构,使得编程更加简洁和易读。高级语言的源代码通常需要通过编译器或解释器转换成机器语言代码,然后才能在计算机上运行。常见的高级语言包括GO、Ruby、C、C++、Swift、PHP、JavaScript、Java、Python等。

随着计算机技术的不断发展,高级语言的使用越来越广泛。高级语言提供了丰富的库和工具,可以更加高效地开发各种应用程序。同时,高级语言的抽象层级也使得程序员能够更加专注于解决问题,而无需深入了解底层的机器细节。

二、C语言的应用

C语言具有广泛的应用场景,以下是一些主要的应用场景:

  1. 系统开发:C语言被广泛用于操作系统的开发,如Unix、Linux等操作系统的内核就是使用C语言编写的。

  2. 嵌入式系统:C语言具有底层控制能力和高效性能,适合用来编写嵌入式系统的驱动程序和控制程序。

  3. 游戏开发:C语言在游戏开发中应用广泛,能够直接访问硬件并提供高性能的运算能力。

  4. 编译器开发:C语言也常被用来编写编译器和解释器,用于将其他高级语言转换为机器码或者解释执行。

  5. 数据库开发:C语言是一些数据库管理系统的核心语言,如MySQL数据库就是用C语言编写的。

  6. 网络编程:C语言提供了丰富的网络编程库,能够方便地开发网络应用程序,如Web服务器等。

  7. 科学计算:C语言具有高效的数值计算能力,被广泛应用于科学计算、数据分析和数值模拟等领域。

  8. 前端开发:虽然前端开发主要使用的是HTML、CSS和JavaScript等语言,但C语言也在一些底层的Web开发中应用,比如开发浏览器引擎。

总之,C语言是一种通用的编程语言,适用于各种不同的领域和应用场景,特别擅长于需要高效性能和底层控制的任务。

三、C语言入门基础

3.1 概念

源文件:C语言源文件是包含了程序代码的文本文件,以.c为文件扩展名。源文件中包含了程序的函数定义、变量声明和定义、控制语句等。

头文件: 头文件是C语言源文件中用于包含函数原型、宏定义、结构体和枚举类型等的文件,以.h为文件扩展名。头文件通常包含了函数声明、结构体定义、宏定义等内容,可以被多个源文件引用,提供了在不同源文件之间共享代码的机制。

关键字:关键字是C语言中具有特殊含义的单词,用于表示语言的基本构造和控制结构,如if、for、while等。关键字不能作为变量名、函数名或标识符的其他部分。

注释:注释是用来增加代码可读性和解释代码的文字,不会被编译器解析为可执行代码(给程序员看的)。C语言中有两种注释方式:单行注释(以//开头)和多行注释(以/*开头,以*/结尾)。

符号:符号是C语言中用于表示特定含义的字符,如运算符(+、-、*、/等)、分隔符(逗号、分号等)、括号(圆括号、花括号等)等。

变量:变量是用来存储数据的一种命名内存位置(会变化的量)。在C语言中,变量必须先声明后使用,声明包括变量的类型和名称,变量名由字母、数字和下划线组成,且不能以数字开头。

函数:函数是一个独立的代码块,用于完成特定的任务。函数可以接受参数,执行一系列语句并返回一个值。在C语言中,函数由函数头、函数体和返回值组成,可以在源文件中定义和调用。C语言中比较特殊的就是main函数,整个C语言程序是从main函数开始执行的,其他的函数均是直接或间接被main调用。

总之,C语言源文件包含了程序的代码和逻辑,头文件用于共享代码和定义声明,关键字是具有特殊含义的保留字,注释用于解释代码,符号表示特定含义,变量用于存储数据,函数是独立的代码块用于完成特定任务。

3.2 C语言写代码步骤

1.编辑源代码

使用vi 或者其他编辑器

用linux  可以用vi命令直接创建编辑代码

vi hello.c
#include <stdio.h>
int main()
{
   printf("Hello, World!\n");
   return 0;
}

2.编译

编译就是用编译器把源程序转化成可执行程序的过程,编译要用到编译器。在linux中使用的编辑器一般是gcc。

例:gcc hello.c  把当前目录下hello.c文件编译,得到的可执行文件名字叫 a.out 也可以自己制定生成的可执行程序的名字,使用gcc hello.c -o hello

3.执行编译生成的可执行程序

执行方式是 ./hello

4.调试

当执行后发现结果不对或者直接报错,这时候就需要返回源代码重新修改执行。

3.3 C语言关键字

在C语言中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字,我们用户自己定义的变量函数名等要注意不可以与关键字同名。

1.数据类型关键字
a. 基本数据类型(5个)

void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。

char:字符型类型数据,属于整型数据的一种。

int:整型数据,通常为编译器指定的机器字长。

float:单精度浮点型数据,属于浮点数据的一种。

double:双精度浮点型数据,属于浮点数据的一种。

b. 类型修饰关键字(4个)

short:修饰int,短整型数据,可省略被修饰的int。

long:修饰int,长整形数据,可省略被修饰的int。

signed:修饰整型数据,有符号数据类型。

unsigned:修饰整型数据,无符号数据类型。

c. 复杂类型关键字(5个)

struct:结构体声明。

union:共用体声明。

enum:枚举声明。

typedef:声明类型别名。

sizeof:得到特定类型或特定类型变量的大小。

d. 存储级别关键字(6个)

auto:指定为自动变量,由编译器自动分配及释放,通常在栈上分配。

static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。

register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。

extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“

const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。

volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。

2.流程控制关键字
a. 跳转结构(4个)

return:用在函数体中,返回特定值(或者是void值,即不返回值)。

continue:结束当前循环,开始下一轮循环。

break:跳出当前循环或switch结构。

goto:无条件跳转语句。

b. 分支结构(5个)

if:条件语句。

else:条件语句否定分支(与if连用)。

switch:开关语句(多重分支语句)。

case:开关语句中的分支标记。

default:开关语句中的“其他”分治,可选。

c. 循环结构(3个)

for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。

do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件。

while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件。

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

可参考  C语言32个关键字汇总详解

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
宋宝华嵌入 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索........................................................................7 C 语言高效编程的几招...............................................................................11 想成为嵌入程序员应知道的 0x10 个基本问题 .........................................................15 C 语言嵌入系统编程修炼...........................................................................22 C 语言嵌入系统编程修炼之一:背景篇 ............................................................22 C 语言嵌入系统编程修炼之二:软件架构篇 ........................................................24 C 语言嵌入系统编程修炼之三:内存操作 ..........................................................30 C 语言嵌入系统编程修炼之四:屏幕操作 ..........................................................36 C 语言嵌入系统编程修炼之五:键盘操作 ..........................................................43 C 语言嵌入系统编程修炼之六:性能优化 ..........................................................46 C/C++语言 void 及 void 指针深层探索 .................................................................50 C/C++语言可变参数表深层探索 .......................................................................54 C/C++数组名与指针区别深层探索 .....................................................................60 C/C++程序员应聘常见面试题深入剖析(1) ..............................................................62 C/C++程序员应聘常见面试题深入剖析(2) ..............................................................67 一道著名外企面试题的抽丝剥茧 ......................................................................74 C/C++结构体的一个高级特性――指定成员的位数 .......................................................78 C/C++中的近指令、远指针和巨指针 ...................................................................80 从两道经典试题谈 C/C++中联合体(union)的使用 ......................................................81 基于 ARM 的嵌入 Linux 移植真实体验 ................................................................83 基于 ARM 的嵌入 Linux 移植真实体验(1)――基本概念 ...........................................83 基于 ARM 的嵌入 Linux 移植真实体验(2)――BootLoader .........................................96 基于 ARM 的嵌入 Linux 移植真实体验(3)――操作系统 ..........................................111 基于 ARM 的嵌入 Linux 移植真实体验(4)――设备驱动 ..........................................120 基于 ARM 的嵌入 Linux 移植真实体验(5)――应用实例 ..........................................135 深入浅出 Linux 设备驱动编程 .......................................................................144 1.Linux 内核模块..............................................................................144 2.字符设备驱动程序 ...........................................................................146 3.设备驱动中的并发控制 .......................................................................151 4.设备的阻塞与非阻塞操作 .....................................................................157
嵌入C语言选择题库是一种集成的软件工具,用于帮助学习和测试嵌入C语言知识的工具。它包含了一系列的选择题,涵盖了嵌入C语言的各个方面,包括语法、数据类型、指针、运算符、条件语句、循环语句、函数等。 这样的选择题库对于嵌入C语言编程学习者来说是非常有益的,因为它提供了一个系统的学习资源,帮助学习者深入理解嵌入C语言知识。通过解答选择题,学习者可以不断巩固和加深对嵌入C语言的理解。同时,选择题中往往会涉及一些典型的嵌入C语言编程问题,通过解答这些问题,学习者可以加深对实际应用的了解,提升编程能力。 基于嵌入C语言选择题库,学习者可以进行自测和自我评估。每次完成一套选择题,学习者可以查看答案和解析,了解自己的掌握情况。通过不断的练习,学习者可以发现自己的不足之处,并针对性地加强相应的知识点。同时,选择题库还可以记录学习者的答题历史和分数,供学习者进行学习进度的追踪与总结。 此外,嵌入C语言选择题库还可以作为培训和考试的辅助工具。培训机构可以利用选择题库设置课后练习和测试,帮助学员提高学习效果。对于企业进行嵌入C语言技能测评时,选择题库可以提供一种简单、高效、客观的评估方。 总而言之,嵌入C语言选择题库是一种有益于学习和测试嵌入C语言知识的工具,它通过选择题的形提供了一个系统的学习资源,帮助学习者巩固和加深对嵌入C语言的理解,提升编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白不想画工图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值