达内嵌入式课程笔记
day2: 编写第一个C程序 、 变量的基本使用
STDC01_day02_01-编写第一个C程序01.ts
C语言程序的绝大部分内容应该记录在以.c
作为扩展名的文件里,这种文件叫做C语言程序的源文件
C语言程序里还包括以.h
作为扩展名的文件,这种文件叫做C语言的头文件
/CSD1702/biaoc/day02 vi 01demo.c
C语言程序里可以直接使用数字和加减乘除符号(*
代表乘法/
代表除法)
C语言里每个计算步骤最后都必须使用分号作为结尾
用分号结尾的一个计算步骤叫做一条语句
{4000 - 2000;}
C语言中绝大多数语句都应该写在大括号里面
C语言里大括号可以用来代表一个**函数(**目前可以认为函数就是一组语句)
每个函数都必须有自己的名字,任何两个函数的名字不能相同
abc(){4000 - 2000;}
C语言中规定任何程序里必须包含一个叫做main
的函数,这个函数叫做主函数
整个程序从主函数的第一条语句开始执行,当主函数里最后一条语句结束后整个程序结束
main(){4000 - 2000;}
函数在结束后可以用一个数字表示它的工作结果,这个数字叫做函数的返回值
主函数应该有一个返回值,如果返回值是0表示程序希望计算机认为它正常结束了,如果返回值不是0就表示程序希望计算机认为它出问题了
STDC01_day02_02-编写第一个C程序02.ts
main(){4000 - 2000;return 0;}
C语言程序里预先保留了几十个英文单词,它们叫做关键字
每个关键字都有特定的用途,不能随意使用
return
就是一个关键字
return
关键字有两个用途,主要用途是用来结束函数的执行,辅助用途是指定返回值的数值
计算机里根据不同数字在某个方面的区别把数字分成几组,每组叫做一个数据类型
每个数据类型都有自己的名字
整数类型是一种数据类型,它的名字是int
这个数据类型包含几乎所有不带小数点的数字
程序中使用的所有数字都必须有数据类型
程序中使用的不带小数点的数字默认都是整数类型的
如果函数有返回值就必须把返回值的类型名称写在函数前面
int main(){
4000 - 2000;
return 0;
}
基本编码规范
1.一行最多包含一条语句
2.同级别的语句最左边一列应该上下对齐
3.尽量使用空格和空行让程序看起来更舒展
STDC01_day02_03-编写第一个C程序03.ts
C语言程序中通常会包含预处理指令
预处理指令以#
做开头,不是以;
做结尾
标准C阶段遇到的预处理指令都可以把文件里的内容替换成其他内容
#include
是一个预处理指令,它可以把一个头文件的内容包含到当前文件里
在这个预处理指令中需要使用相对路径表示被包含头文件的位置
把相对路径包含在<>
中间就表示用系统中预先规定好的一组目录依次作为起点查找头文件
把相对路径包含在""
中间就表示首先以当前文件所在目录作为起点查找头文件然后再以系统中预先规定好的一组目录依次作为起点查找
C语言可以在程序中加入文字性的说明信息
这些信息必须加入到注释区域里
计算机会直接忽略注释区域里的所有内容
单行注释以//
做开头一直到行尾
多行注释以/*
做开头,以*/
做结尾
STDC01_day02_04-编写第一个C程序04.ts
C语言程序中经常需要使用名称区分不同内容
这些名称叫做标识符
标识符最好采用英文单词编写
标识符编写规则
1.第一个字符可以是英文字母或者下划线
2.后面的每个字符可以是英文字母,下划线或阿拉伯数字
3.大小写不同的标识符是不同的标识符(大小写敏感)
4.关键字不可以作为标识符使用
5.标识符的长度没有限制,但是计算机只会截取前面的一部分使用
6.标识符应该采用驼峰方式或下划线方式书写
编译器可以把写好的程序翻译成计算机认识的格式
gcc是Linux系统里最常见的C语言编译器
MinGW是Windows里的gcc
Linux系统中进行C语言程序开发的基本步骤
1.使用vi编写源文件和头文件
2.使用gcc命令把所有源文件翻译成计算机认识的格式
3.最后使用./a.out
做命令执行得到的结果文件
gcc编译器的工作步骤
1.处理所有预处理指令
2.把第一步的结果翻译成计算机认识的格式(编译)
3.把第二步的结果合并成可执行文件(链接)
STDC01_day02_05-编写第一个C程序05.ts
gcc选项介绍
-E
只处理预处理指令
-c
只处理预处理和编译工作
处理结果是以.o作为扩展名的目标文件
-o
用来决定得到的新文件名称
-std=c89/-std=c99
决定采用什么版本进行编译
默认采用c89
C语言里包含一组标准函数,每个标准函数用来解决一个常见问题
每个标准函数都有自己的名字,不同标准函数的名字不同
可以在程序中编写函数调用语句使用标准函数
printf
标准函数可以把程序里的数字显示在屏幕上
为了使用这个标准函数需要包含stdio.h
头文件
STDC01_day02_06-编写第一个C程序06.ts
可以在双引号里使用占位符把数字转移到双引号后面
双引号后面的数字可以是编写程序的时候还不知道的数字
不同占位符需要和不同类型的数字配合使用,
%d
这个占位符用来和整数类型数字配合使用
可以在一条语句里使用多个占位符,这个时候就需要在双引号后面提供多个数字。
数字的个数和占位符的个数一样。
计算机会用双引号后面的数字依次替换双引号里面的数字,然后再显示
STDC01_day02_07-变量的基本使用01.ts
/CSD1702/biaoc/day02 03printf.c
/*
printf标准函数练习
*/
#include <stdio.h>
int main(){
printf("4000 - 1000 = 3000\n");
printf("%d - %d = %d\n",4000,1000,4000 - 1000);
return 0;
}
结果:
4000 - 1000 = 3000
4000 - 1000 = 3000
程序中使用的所有数字都必须记录在内存里
内存由大量的字节构成的,每个字节可以单独记录一个数字
每个字节有一个编号,不同字节的编号不同,这个编号叫做字节的地址
所有字节的地址从0开始向上递增
字节地址有前后方向,地址小的在前地址大的在后
可以把几个相邻字节合并成一个整体记录一个数字
可以把内存里用来记录一个数字的所有字节叫做一个存储区
一个存储区只能记录一种类型的数字
存储区也有地址,它的地址是它所包含的字节中最前面的那个字节的地址
C语言程序中用变量代表存储区,对变量的操作实际就是对它所代表存储区的操作
变量在使用之前必须首先声明,变量声明语句用来声明变量
/CSD1702/biaoc/day02 04var.c
/*
变量演示
*/
#include <stdio.h>
int main(){
int num; //变量声明语句
return 0;
}
可以在一条语句里声明多个同类型变量
/*
变量演示
*/
#include <stdio.h>
int main(){
int num,num1; //变量声明语句
return 0;
}
STDC01_day02_08-变量的基本使用02.ts
可以向变量里放一个数字也可以从变量里获得一个数字
赋值语句可以向变量里放一个数字
赋值语句中需要使用赋值操作符(=
)
赋值操作符左边的内容必须可以代表一个存储区(左值),变量就是一种左值
赋值操作符右边的内容必须可以当作数字使用
/*
变量演示
*/
#include <stdio.h>
int main(){
int num = 0,num1 = 0; //变量声明语句
num = 10; //赋值语句
num = 5 + 8;
return 0;
}
可以在声明变量的时候立刻对变量进行赋值,这叫做变量的初始化
C语言里所有变量都应该初始化
可以直接在程序中把变量当数字使用,这个时候计算机会从变量里拿出数字然后再进行其他计算
/*
变量演示
*/
#include <stdio.h>
int main(){
int num = 0,num1 = 0; //变量声明语句
num = 10; //赋值语句
num = 5 + 8;
num = 4;
printf("num是%d\n",num);
return 0;
}
结果:
num是4
变量名称既可以代表存储区也可以代表存储区里的数字,由环境决定
STDC01_day02_09-变量的基本使用03.ts
存储区的地址也可以代表存储区
可以在变量名称前使用符号&
得到存储区的地址
可以在printf
函数调用语句里使用使用%p
作为占位符把地址数据显示在屏幕上
/CSD1702/biaoc/day02 05var.c
/*
地址演示
*/
#include <stdio.h>
int main(){
int num = 0;
printf("&num是%p\n", &num);
return 0;
}
结果:
&num是0028FF1C //不同运行条件下变量存储的地址不同
变量可以用来代表一个固定的数字
双引号里和双引号外都不能有数字
/CSD1702/biaoc/day02 06var.c
/*
变量练习
*/
#include <stdio.h>
int main(){
int price1 = 4000, price2 = 1000;
printf("%d - %d = %d\n",price1,price2,price1-price2);
return 0;
}
结果:
4000 - 1000 = 3000
STDC01_day02_10-变量的基本使用04.ts
一个变量可以用来代表一组数字(变量在不同的时候代表不同的数字)
/CSD1702/biaoc/day02 07var.c
/*
变量演示
*/
#include <stdio.h>
int main(){
int num = 1;
printf("%d ",num);
num = num + 1;
printf("%d ",num);
num = num + 1;
printf("%d ",num);
num = num + 1;
printf("%d ",num);
num = num + 1;
printf("%d\n ",num);
return 0;
}
结果:
1 2 3 4 5
1 X 9 = 9
2 X 8 = 16
3 X 7 = 21
3 X 6 = 24
5 X 5 = 25
一次显示一行
显示语句里不能有数字
/CSD1702/biaoc/day02 08var.c
/*
变量练习
*/
#include <stdio.h>
int main(){
int num = 1,ten = 10;
printf("%d X %d = %d\n",num,ten - num,num * (ten - num));
num = num + 1;
printf("%d X %d = %d\n",num,ten - num,num * (ten - num));
num = num + 1;
printf("%d X %d = %d\n",num,ten - num,num * (ten - num));
num = num + 1;
printf("%d X %d = %d\n",num,ten - num,num * (ten - num));
num = num + 1;
printf("%d X %d = %d\n",num,ten - num,num * (ten - num));
return 0;
}
结果:
1 X 9 = 9
2 X 8 = 16
3 X 7 = 21
4 X 6 = 24
5 X 5 = 25