一、C语言发展
1.C语言之父--丹尼斯·里奇。
2.C语言的发行版本:
- K&R C(1978年)
- ANSI C(C89/C90,1989年)
- C99(1999年)
- C11(2011年)
- C17(2018年)
- C23(2023年)
PS:目前最流行的C语言版本是C99,学习51单片机要求的是C89。
二、开发工具的安装与环境搭建
1.安装MinGW-w64。
(1)下载MinGW-w64。
MinGW-w64 是一个用于Windows操作系统的开发工具集,其包含了C语言编译器 GCC(GNU Compiler Collection)。官网地址:MinGW-w64GCC for Windows 64 & 32 bitshttps://www.mingw-w64.org
(2)解压缩MinGW文件包。
在D盘文件下创建文件夹gcc,将解压的MinGW文件放置在里面。
(3)添加环境变量。
进入到MinGW文件下的bin文件,复制当前路径。
路径为:D:\gcc\mingw64\bin
在开始菜单中点击设置,搜索框中输入“编辑系统环境变量”。
在高级模块中选择“环境变量”。
选择编辑“Path”变量。
点击“新建”,将复制的路径粘贴到系统变量中。
之后点击“确定”(注意返回时的确定都要点,一共三个)。环境配置完成。
(4)检验是否搭建完成。
快捷键win+R,输入cmd,在终端页面中输入gcc -v,如果出现版本号即可搭建成功。
2.安装开发工具VS Code
1.下载安装包。可以从 VS Code 官网 https://code.visualstudio.com 下载最新版本的 VS Code。
2.基本上同意协议后,第四步之前直接点下一步。
可以选择D盘。
这个要全部勾选。
3.配置 VS Code
(1)安装中文语言包扩展.
Chinese(Simplified)(简体中文)Language Pack for Visual Studio Code,点击扩展按钮,从搜索框搜索“chinese”,第一个就是我们要安装的扩展。
扩展安装完成后需要重启VS Code,正常情况下会弹出重启按钮,点击即可重启,如果没有弹出,可自行重启VS Code。
(2)安装C语言扩展。
点击最左侧“扩展”按钮,搜索“C/C++”,选择“C/C++ Extension Pack”,它是 VS Code 官方推荐的工具包,包含了开发 C/C++ 所需要的多个扩展。
三、写第一个代码“Hello world!”
1.开发一个英文文件名的文件夹。例如:“mycode”
2.打开VS Code,打开文件夹或者直接将文件夹拖入其中。
3.新建文件,注意后缀为.c,例如hello.c,C语言源文件就建好了。
代码如下:
//库文件
#include <stdio.h>
//主函数
int main()
{
//输出打印
printf("Hello world!");
//返回值
return 0;
}
运行。
四、C语言编译流程
(1)源文件(.c),在源文件上编写代码。
(2)预处理(.i),源文件进行预处理生成尾缀 .i 文件。
(3)编译(.s),.i文件进行编译生成.s汇编语言文件。
(4)汇编(.obj),.s经过汇编生成.obj文件。
(5)链接库文件生成.exe文件。
(6)执行使用.exe程序文件。
.c---预处理--->.i---编译--->.s---汇编--->.obj/.o---链接库文件--->.exe---执行
在编译工具里面运行程序代码,是直接能看到.exe执行结果的,但中间的流程是真实存在的,只不过被编译器处理了。
五、函数
1.主函数
程序入口文件,书写代码最先执行的地方,同一文件下主函数不能有多个。
int main(){
return 0;//代表程序执行完毕结束了,后面语句不再执行!
}
ps://是单行注释符号,能够解释和注释运行的代码。
2.常用功能函数
格式占位符:%d(整数),%f(小数)
printf--->输出
scanf--->输入
\n转义字符,另起一行。
int 输入、输出格式占位符都是%d
float 输入、输出格式占位符都是%f
double 输入格式占位符必须是%lf,输出可以是%f,也可以是%lf.
3.标识符
(1)C语言中变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符。
(2)命名规范:
- 只能由小写或大写英文字母,0-9 或 _ 组成。
- 不能以数字开头。
- 不可以是关键字。
- 标识符具有长度限制,不同编译器和平台会有所不同,一般限制在63个字符内。
- 严格区分大小写字母。比如:Hello、hello是不同的标识符。
(3)建议规范:
- 为了提高阅读性,使用有意义的单词,见名知意,如:sum,name,max,year等。
- 使用下划线连接多个单词组成的标识符,如:max_classes_per_student。
- 多个单词组成的标识符,除了使用下划线连接,也可以使用小驼峰命名法,除第一个单词外,后续单词的首字母大写,如 myVariableName、maxClassesPerStudent。
- 不要出现仅靠大小写区分不同的标识符,如:name、Name容易混淆。
- 系统内部使用了一些下划线开头的标识符,比如,C99标准添加的类型 `_Bool`,为防止冲突,建议开发者尽量避免使用下划线开头的标识符。
(4)错误示范:-ajan,23sjsn,don't,$we
六、变量
变量(variable),相当于一个容器,能够存储数据,相同类型数据可多次赋值。
int a=1,b=2,c=3;
float num=1.34,num1=2.34;
变量的使用:(1)先声明(int a),再赋值(a=3),再使用(printf);
#include <stdio.h>
int main()
{
int num1;//声明
num1=199;//赋值
printf("%d",num1);//执行
return 0;//返回,结束
}
(2)声明和赋值在同时,然后使用。例子:
#include <stdio.h>
int main()
{
//声明和赋值一起
int num=1;
//打印
printf("%d",num);
}
七、常量
字面量常量:234,'a',3.14
标识符常量:#define ,const
const例如:
#include <stdio.h>
int main()
{
const int PI=12;//定义常量,和#define PI 12一样
double r,area;
scanf("%lf",&r);
area=PI*r*r;//面积计算公式,表达式不可在输入赋值之前,因为area作为使用要被输出打印的。
printf("%.2lf",area);//输出结果保留两位小数
return 0;
}
#define用法举例:
#include <stdio.h>
#define PI 3.14//定义常量,不能加;
int main()
{
double R,area;//声明两个变量,double字面量是小数
printf("输入一个半径值:");
scanf("%lf",&R);//在输入中,格式占位符double只能对应“%lf”
area=PI*R*R;
printf("输出面积:");
printf("%lf",area);
return 0;
}
八、用户数据段
打开VS Code,点击设置-->用户数据段-->输入C.json/C,加入以下代码。之后只需输入“ct”,即可自动填入头文件和主函数返回值。
"ct": {
"prefix": "ct",
"body": [
"#include <stdio.h>",
"",
"int main()",
"{",
" return 0;",
"}"
]
}
九、今日小测
1.下面哪个是正确的C语言标识符?
A 123var B my-uenxhsb C _shnshc D $sehcn
2.下面哪个是单行注释的正确用法?
A //这是一个单行注释
B /*这是一个单行注释*/
C ····这是一个单行注释····
D #这是一个单行注释
3.下面哪种方式可正确输出变量x的值?
A printf("s%",x);
B print("%d",x);
C printf("%d",x);
D printf("%s",x);
4.补全程序运行流程。
编写代码----》预处理----》( )----》 ( )----》链接----》运行
5.写出以下代码的运行结果。
#include <stdio.h>
const int a=100;
int main()
{
a=200;
printf("%d",a);
return 0;
}
答案:C A C 编译 汇编 程序报错(已定义常量不可二次赋值)