1.C语言是什么
C语言是一种人类于计算机互相交流的语言,属于编程语言,在计算机里有许多种语言,如:java/C++/C等,人类通过各种编程语言来对计算机进行命令
2.C语言的历史
2.1C语言的来源
C语言是来源于一场设计失误,最初是为了作为Unix系统的开发工具而发明的。
1.B语言
发明C语言前,先产生的是B语言,但是B语言存在缺陷,它只允许放置解释器,而不是真正的编译器,由此产生的低效阻碍了使用B语言进行Unix自身的系统编程。
2.C语言
B语言的失败导致了C语言的产生,C语言在B语言的基础上进行了改进从而产生。
3.C语言标准的产生
这时期C语言的改编尤其混乱,可移植性极差,最后由ANSL设立了一个标准,也标志着C语言从此走向正轨
3.C语言的编译器
3.1C语言为什么要用编译器
普遍来讲,C语言编译的源代码仍属于文本文件,他无法被计算机识别,需要编译器和链接器将其变为二进制(计算机可读的)文件来进行执行
3.2文件名约束
1.C语言得源代码通常创建在源文件当中,且文件名后缀需要有.c(C++的后缀为.cpp)
2.C语言中如#include等预处理文件或声明通常创建在头文件中,且文件名后缀需要有.h(有head的意思)
注:预处理文件也可放在含有.c文件里
3.3编译与链接的过程
正常情况下,先由源代码生成.c文件,.c文件经过编译器变为.obj文件(也叫目标代码),再由目标代码与函数库/链接库结合进入到链接器里,形成可执行文件,如下图
其中编译和链接是需要工具的,也就是编译器,编译成功会生成形如下图的文件
3.4常见的编译器
我所用的就是VS2022
-
GCC (GNU Compiler Collection): GCC是一套广泛使用的编译器集合,支持多种编程语言,包括C、C++、Fortran等。它是自由软件,用于许多Unix和Linux系统。
-
Clang: Clang是一个开源的C、C++和Objective-C编译器,它是LLVM项目的一部分。它被广泛用于编译C/C++代码,并在性能和错误信息方面具有很高的质量。
-
Microsoft Visual C++ Compiler: 这是微软的C++编译器,用于Windows上的C++开发。它通常与Visual Studio集成使用。
-
Java Compiler: Java编译器将Java源代码编译成Java字节码,然后由Java虚拟机(JVM)执行。有多个Java编译器,包括Oracle JDK的
javac
、OpenJDK等。 - Swift Compiler: Swift编译器用于将Swift编程语言代码编译成可执行的二进制文件。它是苹果公司开发的,用于iOS和macOS应用程序开发。
3.5 VS2022如何开启一个项目
1.打开编译器
2.点击创建新项目
3.点击空项目并且点击下一步
4.起你想要的名字(最好英文名,不容易出bug)
5.第五步,右击源文件开始创建
点击后选择:添加→新建项
6.最后一步
小提示:在配置新项目时不要将后缀改为.c,特此谨记
3.6如何应对资源管理器没有或误删的情况
方法一:在这个上方直接搜索资源管理器,之后点击即可
方法二:点击视图,里面有一个解决方案资源管理器,点击即可
4.C语言的入门
4.1第一个C语言程序
4.1.1解读
在屏幕上打印出一个“666”,运行请按Ctrl+F5
1.int C语言的整数类型(后期更新整数等)
1.1为什么不用 void main
在C语言中,应该使用 int main
而不是 void main
。原因如下:
-
标准规定:C语言标准规定
main
函数必须返回一个整数值,通常表示程序的退出状态。如果你使用void main
,你违反了C语言标准,这在一些编译器中可能不被允许,或者可能导致不确定的行为。 -
约定俗成:
int main
是C语言的标准约定,几乎所有的C编译器都支持它。其他开发者和维护者也期望看到你使用标准约定,这使得代码更具可读性和可维护性。 -
程序状态返回:
int main
允许你返回一个整数,通常为0表示程序正常退出,非零值表示程序异常退出。这种状态返回对于脚本、自动化工具和其他程序与你的程序进行交互非常有用。 -
可移植性:使用
int main
使你的代码更具可移植性,因为它遵循C语言的标准。如果你的代码在不同的编译器和操作系统上编译,int main
会更有保障。
所以,总结来说,int main
是更好的选择,因为它是标准的、可移植的,而且符合C语言的惯例。
2.main
main为主函数,它是程序的入口,所有程序由它开始
注:
1.main函数是程序的入口,不可或缺
2.main函数只能有一个,即便是多个.c文件,也只能有一个main函数
3.main可以在程序内的任意位置,即便前面有别的函数
4.不要把main写成mian
5.不要忘记main后边的()以及{}
6.main启动的程序运行到return函数时,会结束终止
7.main是最先执行的程序
3.printf
在屏幕上打印字符或数字的函数
用法1:
printf(“字符”)
用法2:
printf(“%占位符”,占位符的内容(多为变量))
如
printf(“%d”,a)
4.return
终止main函数,依据请看下图
如果return时没有终结,那就应该打印三个666,而此时只打印了两个,可见到return时,程序终止。
5.#include
预处理文件,程序的源代码文件先处理预处理文件,后执行main函数,同时printf能使用的原因是因为有<stdio.h>。
stdio.h为头文件
6.杂项
1.每个语句结束后都要输入分号→ ;
2.C语言中不要使用中文符号,要使用英文符号
4.2占位符大全
-
%d
:用于格式化整数输出。 -
%i
:也用于格式化整数输出,可以识别带有前缀的八进制和十六进制数。 -
%u
:用于格式化无符号整数输出。 -
%o
:用于格式化八进制整数输出。 -
%x
:用于格式化十六进制整数输出(小写字母)。 -
%f
:用于格式化浮点数输出。 -
%e
:用于格式化科学计数法表示的浮点数输出(小写字母e)。 -
%g
:用于格式化浮点数输出,根据值的大小自动选择%f
或%e
。 -
%c
:用于格式化字符输出。 -
%s
:用于格式化字符串输出。 -
%p
:用于格式化指针输出,通常用于输出内存地址。 -
%n
:用于将字符数的计数结果存储在参数中。 -
%%
:用于输出百分号字符%
本身,而不是作为占位符处理。
4.3库函数
由C语言厂商提供标准,编译器厂商提供函数,如:printf,scanf....
这些函数集成为一个库叫做:标准库,里面的函数叫库函数
4.4关键字
常用的关键字如下列
先介绍部分关键字:
4.4.1关键字之整形
1.短整型
short
2.整形
int
3.长整型
long
4.单精度浮点型
float
5.双精度浮点型
double
6.字符
char
定义一个字符需要单引号引起来,如char ch={‘j’},ch为标识符,每个初始化变量都需要一个标识符
7.标识符注意点
- 标识符可以包含字母(大写和小写)、数字(0-9)和下划线(_)。
- 标识符必须以字母或下划线开头,不能以数字开头。
- 标识符对大小写敏感,即大小写字母被视为不同的字符。
- 标识符不能包含空格或特殊字符(如@、#、$等)。
- 不能以数字开头,中间不能有空格,不能为关键字。
4.4.2字符与ASCII码值
ASCLL码值和字符可以实现互换,方便信息之间的沟通
利用此图可以实现字符与数组之间的运算。
4.5字符串
单引号引起的是字符,双引号引起的才是字符串
1.有两种打印方式
1.无占位符形
printf(“hhhhhh”)
2.有占位符形
char s={"hhhhh"}
printf("%s",s)
注:切记%s为字符串占位符,%c为字符占位符,二者并不相同
2.字符串性质
1.例:“asdf”这类字符串,并非只存在四个元素,在末尾还会有一个\0
\0是字符串的结束标志,在打印时并不会打印。
2.字符数组
形如:char arr[5]={'0'}为数组字符,即为在数组里存入字符[]括号内部表示能存放多少个字符
3.字符串和字符的区别
在字符时用字符串的占位符可以看到,它会产生乱码,而abc便不会,这其中就因为当打印字符数组时,没有\0,所以无法终止,形成乱码直至终结,而字符串数组则不同,他有\0所以不会有问题,依据如下
字符型
字符串型
4.如何解决
在字符型数组里加入‘\0’
4.6转义字符
解释:转变原本意义的字符如:\0,\n....
\就是转义的符号
\n
:换行符(New Line)\r
:回车符(Carriage Return)\t
:制表符(Tab)\\
:反斜杠(Backslash)\'
:单引号(Single Quote)\"
:双引号(Double Quote)\0
:空字符(Null)\b
:退格(Backspace)\f
:换页符(Form Feed)\a
:警报(Alert)\v
:垂直制表符(Vertical Tab)\?
:问号,用于处理某些编码环境中的特殊字符- \ddd:表示八进制数字
- \xdd:表示十六进制数字