C 语言是一种高级语言,最初由 Dennis M. Ritchie 为了开发一个操作系统而设计,最早在 1972 年在 DEC PDP-11 计算机上被首次实现。
对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。
我们有些时候需要使用一些固定的名称来代表固定的数值,比如在计算你的课程成绩的时候,有的课程会出现用英文字母 A-F 来打分,这个时候你需要换算为一个固定的分值来计算平均分。要实现这个功能,你可以选择在程序的开始定义一系列的常量,但是这样的定义会非常繁琐,而且不方便维护。这个时候就出现了一种变量的类型,枚举。 1. 声明 enum 声明一个枚举类型,可以采用关键字 enum 加上一个自定义的名称,再
由于 C 语言是强类型语言,不能如同某些语言一样,可以在变量中存储任意元素。所以在有的时候会遇到一些问题。比如你有一个变量需要存储计算结果,计算结果有时可能是整数,有时可能是浮点数。这里我们介绍其中可以做到不更改变量名就可以存储不同类型数据的变量。 1. 声明 union 和之前介绍的 struct 的声明方式是类似的,通过关键字 union ,以及这个 union 的名称,还有一系列的变量类型以
在前面我们学习了很多种类的变量,每个变量都会有一种类型。但是如果我们需要定义一个变量,可以同时存储不同的类型的变量,那会在很多场合下很方便的使用。比如我们常见的通信录,里面会包含很多信息,比如姓名,电话号码,邮箱地址等信息。这里面就会涉及到整数,字符串等等。如果每个人建立的时候都分别声明一次其中的变量,那么工作量就会非常的大,也很容易出现错误。 那么怎么解决这种情况呢?这就是今天我们要讲解的内容。
我们通常意义上的常量其实和英语中的常量这个单词不是一个意思,汉语中的常量对应的是 Literal(字面值),而不是 Constant(常量)。 这里我们分别讲一下这两个内容,大家就会有自己的对于“常量”的相关的认识了。 1. 字面值 字面值通常用来表示一个固定的值。这些值可以直接用在程序中,而不需要像变量一样经过声明和初始化以后才可以使用。 字面值分为以下几种: 1.1 整数 这里的整数包含十进制
什么是标准?标准是对重复性事物和概念所做的统一规定,他以科学技术和实践经验的结合成果为基础,经有关方面协商一致,由主管机构批准,以特定形式发布作为共同遵守的准则和依据。 在这个标准概念大行其道的今天,如果大家在生活中稍微注意一下,其实可以很容易发现,我们生活在一个标准化的世界里,每个产品的外包装或者标签上都会注明相应的执行标准。标准贯穿着我们的衣食住行。。总而言之,标准无处不在。 当然标准具有行业
上一个小节 C 语言的程序结构中我们简单的认识了一下 C 语言的程序到底由那些部分组成,但是仅仅了解 C 语言的程序结构还不够,仅仅是万里长征走完了第一步,后面还需要进行很多的步骤才能让程序成为一个可以使用的工业产品。还记的上一个小节中我们提到的 gcc 吗?其实这是一个 C 语言的编译器,这一个小节我们就来学习一下编译器这个概念。 1. C 语言编译器 每个语言都需要编译器,甚至包括可以直接操作
C语言设计模式 关于软件设计方面的书很多,比如《重构》,比如《设计模式》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏捷方法。随着时间的推移,很多的方法又会被重新提出来。 其实,就我个人看来,不管什么方法都离不开人。一个人写不出二叉树,你怎么让他写?敏捷吗?你写一行,我写一行。还是迭代?写三行,删掉两行,再写三行。项目的成功是偶然的,但是项目的失败却有很多原因,管理混乱、需求混乱、设计
我们现在看向内存中的只读数据段和代码段构成的只读空间的概念。 代码段 当程序越来越多,代码段也就越来越大。代码段里面的代码是不可以在运行的时候被修改的,在编译的时候就已经定格了。如果我们试图去写它,就一定会出现段错误。 测试代码如下 我们定义了一个unsigned char类型的指针去指向main函数的地址,强制转换之后告诉编译器我们需要用这样方式读取。在获取到main函数地址之后,我们对这个字节
多级指针概述 我们将指针变量理解为一个存储地址的变量。如果这个地址里面存储的依然是地址,那么我们就可以定义一个二维指针。通过一个二维指针,我们通过两次寻址操作就可以找到这个值。 比如我们定义一个int **p;这是一个二维指针,当编译器看到p的时候,它知道这是一个指针变量,指向一个地址;当它看到第二个的时候,它知道指向的地址里面依然还是地址。如下图所示: 如果我们将p[0]和p[1]分别指向两个字
我们已经在内存中看到了int类型的存储方式,如果我们存储的是0x12,就会在内存中得到二进制的编码0001 0010。如果我们存储一个float类型的1.2,又在内存中又有怎样的存储方式呐?下面我们使用两种方法来读取存储在内存中的float变量。 用int类型的指针来读取同样大小的四个字节 测试代码如下 我们可以看到由于不同的指针类型赋值,依然有一个警告。 运行结果如下 这就是浮点数1.2在内存中
下面为了让大家更好的理解上面两个概念,我们来举几个例子来查看一下。 解释第一个概念:大小一样的盒子存储指针 代码如下 我们声明了两个类型的变量,它们的类型是不同的。我们通过sizeof来查看这两个指针变量的大小。 #include <stdio.h> int main(){ int *p1; char *p2; printf("the p1 is %u, th
今天我们进入到嵌入式C语言高级部分的第三个内容-C内存空间的使用。 学习目的 在本章内容中,我们将给大家展示一下C语言对于内存空间指向和内存空间使用上的一些技巧。在我们上一个阶段中,我们只是明白了C语言给我们带来的关键字和运算符。但是C语言的核心-操作内存资源的方式方法,这些我们没有介绍。在本个学习阶段,我们将重点围绕C语言访问内存空间的方式,以及访问空间需要使用的一些技巧来展开。 指针介绍 之前
入门书籍 C语言开发入门教程 视频链接:https://pan.baidu.com/s/1c1Yjr80 密码: idtn 答案链接:http://pan.baidu.com/s/1hsbk2tm 密码:g81c 源码链接:http://pan.baidu.com/s/1jHL7up4 密码:hafs 题库链接:http://pan.baidu.com/s/1c17604g 密码:vqfw 方案链