本人目前大三,刚买了一套来自上官课程陈老师的课,于是着手写博客。由于学的物联网,所以也是在大一的时候学过c语言,故c语言的内容我就会快速过一遍,主要在温故知新。

c语言框架以及含义:

#include<stdio.h>                      //编译预处理命令int main()                             //程序入口主函数,点击exe首先寻找的函数
{                                       //程序(函数、功能)开始标志printf("hello world");               //编译的内容return 0;                            //程序退出前返回给调用者(操作系统)的值
}                                       //程序(函数、功能)结束标志

其中,<stdio.h>头文件指的就是在int main(){...}中可能要用的函数的一个事先定义的函数库。

#include<>代表就是提前编译(替换)成头文件里面的所有函数定义内容,故第一行我们称之为编译预处理命令。如果学过python,就可以把第一行理解成一串带有impact的定义。

int main()指的就是所有.c程序执行时首要找到的命令。

指的是程序的开始,当我们双击一个程序的时候,我们都会从main()函数开始寻找,然后逐条执行,当遇到计算机不认识的函数时,则会从头开始寻找定义,如:printf("hello");在计算机没有预编译时,计算机是并不认识printf函数所代表的意思,故我们只需要手动在main前面加入printf的函数定义,计算机就能从定义里引用函数。

return 0;指的是程序跑完之后,会默认返回的一个交代。

通常程序执行的时候,需要判断程序是否正确执行,因此需要一个返回值,一般我们将正确返回的值设置为0,而return 0;就是用来实现这个的命令。

变量

引出变量

首先在我们的初中数学中,我们就学习了代数的概念,什么是代数,就是将苹果和梨分别想象成两个字母(x, y),则如果问我们总共有几个水果,我们只需要将苹果和梨的个数相加,也就是代指中的(x + y)。而实现这一功能,我们主要用到逻辑为:什么东西?数值是多少?要做什么运算?

类比到计算机,我们可以简单的抽象成:什么变量?变量的值?用一个什么函数?但是问题再一次出现,那就是这些东西我要怎么用,也就是,放哪里,我们不可能凭空得到x和y,甚至也不能凭空得到函数在哪,因此,存储就出现了,不同于人脑的想象力,计算机需要固定下什么东西放在哪里?

再一次,我们现在要一个苹果一个梨和一个剪刀,这一次我们问,水果有几个?有没有工具?我们开始假设,现在有一个大的存储区,我们将苹果这个值放入其中,并且记住这是苹果的位置,以后苹果的多少都只在这里找,然后,再把另一个苹果和梨还有一把剪刀顺次安排进来。但是由于这一次问的是,水果和工具,那么,我们就需要把他们分类,而且由于我们问的是有没有工具,所以我们不需要像计算多少个苹果那样,需要一个很大的空间,我们只需要记录,有或者没有就行。于是,我们再一次引出了另一个关键概念,那就是变量类型。

现在我们得到四个关于变量的关键要素,分别是:叫什么(变量名)、多少量(变量值)、分类(变量类型)、放在哪(存储单元)。

变量定义标准

在命名一个变量的过程中,我们会涉及一些标准,毕竟如果不加以规定,那么每一个人的代码都会不一样,甚至都不能区分,两种语言的区别,所以标准是一个很重要的环节。

因为我们键盘总共有字母,数字和符号这三类组成,但是由于符号不像数字或者字母,每一个都很重要,所以,我们决定就用一个下划线来替代所有符号这个类别,这样也能让定义出来的好看不少。又因为,取名中,在外国人名里,我们看不到以数字开头的,除非别称,不然都是字母,同样延续到计算机,我们也决定使用字母来开头,但是,由于系统也可能存在一样的命名,所以我们采用在最前面加一个下划线的定义方式来区别他们,而数字一般都被我们用来定义如苹果1号,苹果2号这种,所以就不被定义用于开头。

所以经过一系列的讨论和规定,我们采用下划线和字母开头,并且不允许用数字开头,不然难免出现,1、2、3、这种名字,让人实在摸不到头脑。当然为了区分如直径大于1dm的苹果我们叫A,而小于1dm的我们叫做a。于是我们也规定它区分大小写。

于是我们定义出了他的定义框架,如:“int(变量类型) data(变量名);”

命名习惯

在一般命名中,我们会使用驼峰命名法。这是一种约定俗成的方法:

举个例子,如:int secondsPerYear;也就是直接对照英文翻译就可,但是中间没有空格,首字母小写,后面每出现一个新单词就首字母大写代替空格作用。

如果我们需要定义一个函数名,那就直接用下划线代替空格,这样显得区分更明显,如:seconds_Per_Year。

为了防止和系统定义的名字相撞,所以我们一般会定义出,如:_printf这种名称。

数据类型

主要的数据类型分为整数、浮点数(小数)、字符型(字母),其他(枚举型,空型,指针,数组,结构体,共用体,函数)。

我们主要常用的有:整形(int a = 1;)、浮点数(float b = 1.1;)、字符型(char c = 'c')。

在之前,我们介绍了数据类型,我们说,分类还有一个标准就是划分给你的区域大小。因此,在这三类类型中,int占4个字节,而char占1个字节,float同样占4个字节。在此,我们就可以大致引出一个转换的概念,就是char这么小,能不能直接和int挂钩?程序员们其实早就想到了,于是,ASCII码就出现了,这是一个专门的转换表,将char类型转换成int类型,于是这三种类型也就联系在了一起,char可以准换成int,而int和float就是数字,int在一定条件下可以转换成float。

由于他们存在联系,所以我们就引入了强制转换的概念,格式:在需要转换的变量名前加一个(转换类型),如:

int a = 10;
int b = 3;
float c;c = (float)a / b;

这样我们就能将整数a变成小数a,就能相除出小数了。

输入输出

printf("格式控制", 输出列表 );

"格式控制":分为两部分,分别是:普通字符(也就是直接输出的字符)、格式申明(一般有%d,%c,这类以%开头的定义)

输出列表:指的是,当程序包含变量的时候,我们需要去找到这些变量指的是什么,这就涉及到格式控制中的%d;%f;%lf;%c;这几个,他们代表输出整数,浮点数,double(可以理解为两倍长度的浮点数),字符;而后面的输出列表就用于替换前面的%符号内容。如:printf("a = %d", 5);则输出:a = 5 。

其中如果我们要限制输出有效位数,如:要限制输出有效数字为3个,则printf("%3d", a);如果要限制小数位数,则如:要限制小数点保留三位,printf("%.3lf", a);格式为%(-)m.nf:存在负号是,输出靠左,右端补0,反之亦然。

float b = 3.333;
printf("%6.2f\n%-6.2f", b, b);
/*
输出为:3.33
3.33
*/

当我们有进制数要求时,%0,%0x;分别代表了输出8进制和16进制;其中%x和%0x区别为,%x在没有占满4位的情况下,前面没有满的用空格补充;%0x则用0补充。

当然如果没有变量我们也可以直接输出前半部分,而不需要后半段,如:printf("hello");

当我们需要变量地址的时候,就引出%p。

当需要换行操作时,就引出了%r、%n、%b;他们分别代表不同意思:

%r代表,直接光标挪到头,然后进行覆盖式输出,如:

 printf("11111%d\r", a);printf("h");

则输出

h1111

%n代表,直接换行输出值从下一行开始,如:

 printf("11111%d\n", a);printf("h");

则输出为

11111
h

%b代表,先输出,但是一旦有新的代码会马上删除这一行

 printf("11111%d\b", a);    //则输出为11111
 printf("11111%d\b", a);printf("h");//则输出h

scanf

格式:scanf(格式控制, 地址表列),与printf不同的是,scanf后面是地址表列,所以要引用上地址,如sanf("%d%d%d", &a,&b,&c); &是取地址符号。

连续多输入的时候,如:sanf("%d%d%d", &a,&b,&c);则我们不需要考虑过多的如何区分三个数的问题,一般的,我们使用逗号,空格,回车都能实现读取。但是如果输入格式为字符(%c)时,就不需要考虑这些,必须要紧挨着连续输入(因为空格、逗号、回车都属于字符)。

其中scanf存在一个需要注意的输入方式,由于是计算机思维,所以计算机在运行时,会与“格式控制”一一对应,即格式有什么字符,输入的时候也要输入什么字符,例如:scanf("a=%d",&a);我们想输入a=3,那么,为了计算机能读取,我们就需要输入“a=3”。

嵌入式学习——c的复习相关推荐

  1. 大学四年嵌入式学习心得体会

    我所在学校是普通的本科院校,从大一开始加入嵌入式实验室,一直在实验室呆了三年半,从大一的懵懂无知,天天看着 C 语言书自己敲代码,到后来学习51单片机,STM32,做过3-4个项目,参加各种比赛,轻轻 ...

  2. Linux嵌入式学习---C语言之数据类型及运算

    Linux嵌入式学习---C语言之数据类型及运算 一.Linux下c语言概述 1.1C语言特点 1.2c语言是结构化的语言 1.3c是模块化的语言 1.4程序可移植性好 1.5c语言运算符丰富,代码效 ...

  3. 嵌入式学习路线怎么学,如何学习嵌入式系统

    随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学? 想要学习好嵌入式,想成为嵌入式软件工程师.那么当前企业需要 ...

  4. 计算机网络之-嵌入式学习

    网络作为嵌入式学习的必备知识,很多嵌入式学习者还没有真正的去系统的了解过网络这个知识,在学习网络这块的知识,整理了一些网络笔记,希望对大家的学习能有帮助,那下面就一起看看计算机网络的相关知识吧!本文较 ...

  5. 以软件推动工业进步 -嵌入式学习网站

    http://www.cnblogs.com/cubean/archive/2010/04/26/1721035.html 以下内容转自:http://bbs.msembed.com/showtopi ...

  6. C指针-这该死的嵌入式学习生涯

    C指针-这该死的嵌入式学习生涯 01 前言 最近在公众号里面收到好几个同学关于嵌入式方面的咨询,再加上在知乎里面陆续推送了好几个嵌入式学习入门的问题,这次想统一整理一下,说说我这些年是如何被嵌入式按在 ...

  7. 嵌入式学习的几种线路图

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1.嵌入式linux上层应用,包括QT的GUI开发 2.嵌 ...

  8. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  9. xupt嵌入式学习(day1)

    嵌入式学习 嵌入式系统基础知识: 一.冯诺依曼计算机体系结构的要点: 1.计算机中的信息(程序和数据)以二进制方式表示. 2.程序预存储,机器自动执行. 3.计算机由运算器.控制器.存储器.输入设备和 ...

  10. 嵌入式学习之STM32实现OLED

    嵌入式学习之STM32实现OLED 一.实验要求 二.SPI介绍 三.OLED介绍 四.实验过程 1.代码编写: 实验结果演示: 一.实验要求 理解OLED屏显和汉字点阵编码原理,使用STM32F10 ...

最新文章

  1. react全家桶从0到1(react-router4、redux、redux-saga)
  2. JXLS导出Excel(模板导出)
  3. libevent中的缓冲区(二)
  4. IntelliJ IDEA(一、下载,安装与激活)
  5. C#中的线程(一)入门
  6. Java提高篇 —— Java三大特性之继承
  7. java 接口中变量修饰符,Java的访问修饰符与变量的作用域讲解
  8. 父母该不该把自己的收入告诉孩子?
  9. maven文件报错(pom.xml或者jar包缺失)解决方法
  10. 生成一定数量的不重复随机数
  11. 澎湖师傅共制巨型“米龟” 延续两岸“乞龟”祈福民俗
  12. QQ概念版(WPF制作)
  13. PHP程序员简历模板
  14. pythonsorted降序_【python】 sort、sorted高级排序技巧
  15. 基于spss的非线性回归(non-linear regression)
  16. python处理excel数值为文本_使用Python中的xlrd将数字Excel数据读取为文本
  17. 最大团(最大完全子图)
  18. 用 VS2005 类设计器设计类
  19. uni.app H5(微信公众号定位) uni.getLocation
  20. QCOM 8976 porting SPI device

热门文章

  1. 数理统计——样本分布
  2. python输出欢迎某某某_python中怎么写注释
  3. (渣男渣女必备之)层次分析法AHP-Analytic Hierarchy Process操作流程及代码实现
  4. java连连看代码_Java版连连看
  5. Android 视频播放器
  6. 自定义进度条PictureProgressBar——从开发到开源发布全过程
  7. 不是所有的美剧都适合学英语
  8. 从0开始学大数据(一)
  9. 科技如何激发女权主义并改变男性气质
  10. See Electrical 7 R2 B11电气设计软件PLS-CADD v12.3架空电力线设计软件