一.C语言是什么
在我们生活中,我们在交流时候使用的就是语言,在这个世界上有许多的国家、民族,自然也有很多语言如:汉语、英语、法语等等,这种人与人交流使用的语言我们称为自然语言。然而计算机并不能理解我们的语言,这时候就有人发明了如:Python,C++,JAVA等计算机语言。C语言便是其中最具有代表性之一的语言。
二.C语言的历史
这里不需要注意太多内容,只需要知道如下一点:
在C语言的历史上一共有三次比较大的改变,分别为:[C89标准],[C99标准]),[C11标准]
三.编译与链接
3.1 编译链接的过程
C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件(txt文件),⽂本⽂件本⾝⽆法执⾏,必须通过编译器编译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。
- 每个源文件经过编译器处理生成对应的目标文件(.obj)
- 多个目标文件和库文件经过连接器链接后生成可执行程序(.exe)
- 详细的编译过程,会有一门被称为编译原理的课程专门传授。
我们在这里要知道的是,编译器的作用是:预处理+编译+汇编、链接器的作用是汇编。
这里我们暂时不介绍预处理阶段,然后简单介绍一下编译和汇编阶段。
简而言之,编译是将高级语言变成汇编语言,汇编是将汇编语言变成机器语言。
下面给大家介绍一下高级语言、汇编语言、机器语言。
机器语言、汇编语言和高级语言是计算机编程中的三种不同层次的语言,各自的抽象程度和与硬件的交互方式有所不同。
2. 机器语言(Machine Language)
- 定义: 机器语言是计算机直接理解和执行的语言,由二进制数(0 和 1)组成。
- 特点:
- 完全由二进制指令构成,最底层,难以阅读和编写。
- 与处理器架构紧密相关,不同硬件有不同的机器语言。
- 执行效率最高,因为没有中间的翻译步骤。
例子:
10110000 01100001 (将 97 放入寄存器)
3. 汇编语言(Assembly Language)
- 定义: 汇编语言是机器语言的低级别抽象,用助记符代替二进制指令,帮助程序员更容易编写和理解代码。
- 特点:
- 使用助记符(如
MOV
、ADD
)表示指令,较机器语言更具可读性。 - 需要汇编器将汇编代码翻译成机器语言。
- 与硬件密切相关,每种处理器都有自己的汇编语言。
- 使用助记符(如
例子:
MOV AL, 61h (将 97 放入 AL 寄存器)
4. 高级语言(High-level Language)
- 定义: 高级语言是一种抽象程度更高的编程语言,接近自然语言或数学表达式,远离底层硬件。
- 特点:
- 易于编写、阅读和维护,面向问题的解决方案,而非硬件。
- 与平台无关,通常通过编译器或解释器转换为机器语言。
- 常见的高级语言有 C、C++、Java、Python 等。
例子:
int a = 97; (声明一个整型变量并赋值 97)
5.总结
- 机器语言: 最低级别的语言,直接与硬件交互,二进制表示。
- 汇编语言: 机器语言的符号化抽象,仍然与硬件紧密相关。
- 高级语言: 更抽象、接近人类语言,易于使用,与硬件无关。
四.集成开发环境
集成开发环境,被称为IDE。
IDE是用于提供程序开发环境的应用。
其一般包括代码编辑器、编译器、调试器和图形化界面。
其中,编辑器是让你编代码的,编译器是用来编译的。
调试器是用来调试的,图形化界面是能让你看到。
这里我建议大家使用vs2022,因为我用的是这个。
五.C语言项目的建立
1.双击vs2022
2.双击创建新项目
3.单击空项目+下一步或者双击空项目
4.在解决方案资源管理器中找到:源文件->添加->新建项
5.选择cpp文件,修改文件后缀为.c
6.点击添加,完成项目创建。
六.你好,世界!
现在我们来打出人生的第一个程序。
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
输出结果:hello world
- 每个C语言都是从main函数开始执行的,main函数是程序的入口,main函数也被叫做主函数。
- main函数前面的int表示函数的返回值,return表示返回,因此我们最后返回了0.
- printf是一个库函数,它可以帮助我们打印语句。
- C语言每条语句结束后都要加英文分号(;),表示语句的结束。
下面我们来介绍字符
六.字符和ASCII表
6.1 什么是字符
像‘a’,‘b’,‘c’,‘1’,‘#’ 等由单引号引起来的东东,我们称为字符。
ps:重点是单引号,单引号里面只能引一个。
6.2转义字符
而在字符中有一种特殊的字符,比如‘\n’(换行),‘\0’(null),这些特殊的字符,我们称它为转义字符,并且每一个转移字符都有特殊含义。下面是一些常见的转义字符及其含义。
我认为,这一大堆里面我们只需要会用\n、\\以及\'就足够了。
6.3ASCII码
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些a’,‘b’,'@'字符在内存中分别以什么样的⼆进制存储的呢?
所以有人为它们每个字符都编了个二进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。
- 字符A-Z的ASCII码是65-90
- 字符a-z的ASCII码为97-122
- 对应的大小写字符的ASCII码值的差值是32
- 数字字符0-9的ASCII码值是48-57
- ASCII码值从0~31这32个字符是不可打印字符,⽆法打印在屏幕上观察
练习:小写转大写
printf("%c\n", 'Q');
printf("%c\n", 81);
展示:打印出全部可打印字符
for (i = 32; i <= 127; i++)
{
printf("%c ", i);
if (i % 16 == 15)
{
printf("\n");
}
}
7.1 字符串
使⽤双引号括起来的⼀串字符就被称为字符串,如“abcd”,“1234”,但是和字符不同的是,字符串会在结尾默认加个’\0’,作为其结束标志。
printf("hello world");
puts("hello world");
\0样例:
printf("zcxv\0sdaf");