这个博客将开始几个系列,都是从零开始一起学,未来会涉及到C语言,STM32,linux系统,驱动,应用,设备树,ARM开发板,QT,网络编程,python web,微信小程序,AI,GPU等。也是我个人近年来的学习路线。这个系列主要是上传自己的学习笔记,各位以后看到感兴趣有需要要源码或者笔记的欢迎留言。
目录
一、计算机以及语言的发展
1、计算机是上个世纪40年代由美国军方发明的,单纯的计算。发展到现在应用于各行各业,体积越来越小,功能越来越强大。
2、语言的发展
1、第一阶段:机器语言,1 0 代表高低电平。没有可阅读性。
2、第二阶段:汇编语言。用指令集代替机器语言,有一定的阅读性。
3、第三阶段:高级语言。
面向过程:c语言,vb等。在汇编基础上进行封装,解决问按步骤分解为一个个函数来实现。c语言特点:可移植性,执行效率高,常用于编写硬件。
面向对象:c++,java等,主要用于上层应用的编写。
二、嵌入式的定义以及应用
嵌入式:专用的微型计算机,由软件和硬件组成。特点:软硬件可裁剪。
应用:军事、医疗、工控、电子消费等等。
三、数据类型介绍
1、数据类型的分类
数据类型:数据在内存中的分类。
数据类型的分类:基本数据类型、构造数据类型、无类型。
2、基本数据类型
整形:c语言中用来描述整数的数据类型。按照存储数据大小可分为短整形(short int)、长整形(long int)、整形(int)。
无符号整形(unsigned int)、有符号整形(signed int)。
字符型:c语言中用来描述字符的数据类型。用char表示。
字符是以ASCII码的形式存储的。 a----ASCII码 97
ASCII码表。
浮点型(实型):c语言中用来描述小数的数据类型。按照精度的大小可分为单精度浮点型(float)、双精度浮点型(double)。最常用的为float型。
3、构造数据类型
在基本数据类型基础上演化而来的。函数、数组、结构体、共用体、(枚举)、(指针)。括起来的表示存在争议,会使用就行。
4、无类型
用void表示,可以理解为无。
5、数据类型的大小
不同的编译环境下数据类型的大小是不固定。
1Byte=8*bit KB MB GB (1024)
最常用的32位编译环境下:char—1个字节 short—2个字节 int—4个字节long—4个字节 float—4个字节 double—8个字节。
四、几个重要的定义
1、关键字
关键字:编译器已经规定好其作用,我们按照其规律使用就可以了。
2、标识符
标识符:c语言内部的名字。变量名、数组名、函数名等等
标识符命名规则:由字母、数字、下划线组成,数字不能放最前面,不能和关键字重复。
3、常量和变量
变量:程序运行过程中可以改变的量。使用之前需要定义
int a;//定义一个整形变量a
常量:程序运行过程中不能改变的量。只读不能改变。
4、字符常量
用单引号引起来的单个字符。例: ‘a’ ‘\0’ (空字符) ‘ ’(空格字符)
5、字符串常量
用双引号引起来的一串字符。例:”abcde” 注意:最后默认加一个’\0’
五、运算符
1、运算符的分类
按照操作数的个数可以分为:
单目运算符:正负号,自加自减运算符。
双目运算符:+ - * / % 等等
三目运算符:条件运算符
2、常用的十大类运算符
2.1、赋值运算符: =
int a = 6;//把6赋值给整形变量a
2.2、算术运算符:+ - * / %
%(求余运算符):注意,操作数必须为整数。
2.3、关系运算符:> < >= <= !=
比较两个操作数之间的关系,成立结果为1,不成立为0
2.4、逻辑运算符:&& || !
&&逻辑与:两个操作数同时为真的时候结果为真。
|| 逻辑或:任意一个操作数为真,则结果为真。
! 逻辑非:操作数为假的时候结果为真。
2.5、位运算符: << >> & | ^ ~
2.6、复合运算符:+= -= *= /= &= |=
int a = 5; a += 3;//a = a + 3;
2.7、自加自减运算符 ++ --
a = 3; b = a++; //b = 3 ; a = 4 –运算符放后边,先赋值后运算
a = 3;b = ++a; // b = 4; a = 4 --运算符放前面,先运算后赋值
2.8、sizeof运算符
求数据类型或则变量的大小。单位为字节
int a = 2; sizeof(int) ==sizeof(a) == 4
2.9、条件运算符
格式:表达式1?表达式2:表达式3;
判断表达式1的结果,成立运行表达式2,不成立运行表达式3
int a = 3;
a >3?a =4:a=2; //a = 2
2.10、逗号运算符: 分割的作用。
int a,b,c; // 同时定义三个整形变量 a b c
3、运算符优先级问题
运算符优先级表。
括号的优先级最高,遇到优先级不确定的情况加括号。
算术运算符>关系运算符>逻辑运算符
六、类型转换
如果两个不同类型的数据之间进行运算,需要先转换为相同的数据类型,然后进行运算。
1、自动类型转换:编译器自动向高精度类型进行转换。
int + float = double;
2、强制类型转换:人为手动转换数据类型。
格式:(要转换的类型)变量
例1:求浮点型数据的小数部分
float a = 3.14;
a-(int)a
例2:求浮点型数据的整数部分,小数四舍五入。
float a =3.14;
(int)(a+0.5)
七、标准输入输出函数
标准输入:格式 scanf(“类型格式符”,&变量);//手动给变量输入一个值
标准输出:
printf(“输出内容”);//打印输出内容
printf(“类型格式符”,变量);//把变量以类型格式符的方式打印出来。
Printf(“输出内容类型格式符”,变量);
例printf(" 加密%c\n 解密%c\n",x+1,x);
类型格式符:int --%d char -- %c float -- %f double--%lf
%x—十六进制 等等
%5d—位宽为5,右对齐
%-5d—位宽为5,左对齐
%.3f—保留小数点后三位。
\n 换行符
函数标准格式:
#include <stdio.h>
int main()
{
return 0;
}
!printf是从右往左算的! 例 printf(“%d %d %d”,a,++a,--a);
先算--a