C语言常见概念
一、C语言是什么?
人与计算机之间的交流是通过计算机语言,C语言是一种典型的计算机语言。美国国家标准协会(ANSI)制定了一套C语言的使用标准,标志着C语言趋向于规范化与成熟化。
二、编译与链接
①计算机只认识二进制指令(0与1)。
②C语言是一门编译型的计算机语言,C语言的源代码都是文本文件(其源代码存放在.c为后缀的源文件中),不能直接运行。必须通过编译器的编译与链接器的链接生成二进制的可执行程序(.exe程序),该程序才能被运行。
三、编译器与集成开发环境。
①C语言是一门编译型的计算机语言,计算机语言需要依赖编译器才能生成可执行的机器指令(二进制指令)。
②常见的编译器:msvc(微软公司)、clang(苹果公司)、gcc。使用编译器一般需要通过敲命令行的方式,不太方便,为了解决这一不便,就诞生了集成开发环境。
③集成开发环境:(IDE),⼀般包括代码编辑器、 编译器 、 调试器和 图形用户界面等工具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套件。
④常见的集成开发环境:VS2022(集成了MCVC)、XCode(集成了clang,常在苹果电脑上使用)、CodeBlocks(集成了gcc)、DevC++(集成了gcc)
⑤VS2022的优缺点:
四、项目(工程)、源文件、头文件
①在VS上写代码时,我们通常将代码放在一个项目(工程)中进行管理。项目的名称需要起一个有意义的名字,尽量不要使用中文、空格、特殊字符。
②源文件与头文件
.c为后缀的是c语言的源文件
.cpp为后缀的是c++语言的源文件
.h为后缀的是头文件
五、main函数(主函数)
①main函数的介绍
每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的,main 函数是程序的入口。需要特别注意的是,在一个项目(工程)中,不管有多少个源文件,main函数有且仅有一个(因为程序的入口只能有一个)
int main()
{
return 0;
}
注:返回值int表示当main执行结束时,会返回整数0
②main函数的多种写法(推荐使用b与d这两种写法)
a.无返回值且无形式参数的写法(这种写法很古老,在有的编译器上会报错,不推荐)
void main()
{
}
b.有返回值且无形式参数的写法(推荐)
//int main()
//{
// return 0;
//}
//等价于下面这种写法
int main(void)
{
return 0;
}
c.无返回值且有形式参数的写法(有的编译器上会报错)
void main(int argc,char *argv [])
{
}
d、有返回值且有形式参数的写法(在后续的Linux课程中将会遇到)
int main(int argc, char* argv[])
{
return 0;
}
③main可以有形式参数也可以没有,它的形式参数是有特殊意义的。需要使用形式参数时就写上,否则就可以不写
六、printf函数与库函数
①printf函数
printf函数是C语言标准库中提供的函数,功能:在屏幕上按照某种格式打印信息。print:打印,format:格式
②库函数
a.为了不再重复写常见的代码(如写一个函数按照某种格式在屏幕上打印信息、写一个函数求字符串的长度),提高程序员的开发效率,C语言标准中规定了一些函数(每个函数都规定了函数名、返回值类型、形式参数以及函数功能),再由不同的编译器厂商根据该规定实现这些函数,提供给程序员使用。这些函数组成了一个函数库,称为标准库,这些函数就被称为库函数。 在这个基础上⼀些编译器厂商可能会额外扩展提供部分函数(这些函数其他编译器不一定支持)。
b.同⼀系列的库函数⼀般会声明在同⼀个头文件中(比如,与字符串相关的库函数的声明就在头文件string.h中)。使用库函数前,一定要包含对应的头文件(函数要先声明后使用,包含头文件就相当于函数的声明)。
c.C++中提供的库函数的链接
七、关键字(保留字)与标识符
①关键字(保留字):C语言中规定的一些具有特殊含义的名字,如int代表整型,return代表返回。
注:在C99标准中又加⼊了 inline 、restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字。但使用最多的还是表中的32个关键字。
②标识符:程序员给变量、函数、数组等起的名称。
③标识符的命名规则:只能由数字、字母(a ~ z与A ~ Z)、下划线组成,不能以数字开头,且不能与关键字重名。如2b就不符合标识符的命名规则。
八、字符与Ascll编码
①字符:用单引号引起来的内容。如’a’、‘@’、‘>’
②我们知道计算机中的所有数据都是以二进制的形式存储的,那么字符在内存中该如何存储呢?
如果我们每个人都给这些字符编一个二进制序列(编码),那么就无法统一表示这些字符。于是,美国国家标准协会(ANSl)就出台了一个Ascll编码。C语言中的字符就采用了Ascll编码。
我们不需要记忆Ascll码表中所有字符对应的Ascll码值,但最好要记一些常见字符的Ascll值。
int main()
{
//打印Ascll码值为32到127的所有字符(即所有可见字符)
int i = 32;
while (i <= 127)
{
printf("%c ", i);
i++;
}
return 0;
}
九、字符串与字符’\0’
①字符串:用双引号引起来的内容,如"abcd"就是字符串。
②字符串的结束表示是字符’\0’,也就是说字符串的末尾隐藏着一个字符’\0’。
③字符’\0’是字符串的结束标志,它也是空字符(null字符),表示没有内容 。它的ascll码值的十进制表示方式是0
④站在计算机的角度,正确理解字符串中的’\0’
有时在双引号内容的中间部分就会出现’\0’,此时就表示字符串结束了。比如“ab\0cd”,在人的角度会觉得该字符串中有6个字符,但计算机会认为该字符串中只有前3个字符。
⑤printf函数打印字符串时,遇到字符’\0’时就停下了;strlen函数求的是字符串中’\0’字符之前的字符个数
int main()
{
printf("ab\0cd");//ab
return 0;
}
十、转义字符
①何为转义字符?
转变原来意思的字符,属于一种特殊的字符
②三字母词(了解即可)
a.三字母词的由来
以前的老式键盘上,是没有“ [ ] { } ^| "这些字符的,c语言为了解决这个问题,就创建了三字母词(两个问号加一个其他的字符),在代码编译阶段,三字母词将会被解析成对应的字符。三字母词一共有9个,如下表所示:
代码示例:
如今键盘上可以敲出这些字符了,三字母词也就没多大用处了,因此很多编译器已经不支持三字母词了。
③转义字符表
④求含转义字符的字符串的长度
a.转移字符也是一个字符,只不过它有特殊的功能。
十一、空语句
①什么是空语句?
仅由一个分号组成的语句。
②空语句的使用场景
若某个地方需要写一条语句,且这条语句什么都不需要做,那么就可以写一条空语句。