目录
前言
这篇文章会在你学习C语言之前给予你一些帮助,能够帮助你去简单的了解C语言中的一些简单的术语和代码,不至于刚开始学习时看见什么都觉得一头雾水。
1.C语言是什么?
C语言是一种计算机语言,当然C++/Java/Go/Python都是计算机语言。人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的。
计算机语言是人与计算机沟通的桥梁,使得人们可以使用计算机语言来解决很多问题,从而造福人类。
2.程序
源程序
程序是由人们利用计算机语言来写的,人们通过字符序列创建出来的程序为源程序,用来存放源程序的文件为源文件。通常,我们将C语言的源文件的拓展名定为“**.c”,然而我们常见的“**.cpp”往往是C++的源文件的拓展名,“.h”为后缀的文件为头文件。
程序的执行过程
源代码需要编译和链接
C语言是一门编译型的计算机语言,C语言的源代码都是文本文件,单单通过这种文本文件来执行是行不通的,必须通过编译器的翻译和链接器的链接形成可执行的二进制文件,这样的二进制文件才能够被执行。
1. 每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
2. 多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)
编译器的选择
市面上出现了不少C语言的编译器应用,而这里我着重介绍一下我自己使用的编译器——
Visual stdio,然后我自己下载的是2022版的,大家可以自行选择版本,2019以下的版本太老了已经不推荐了。
• VS2022 是⼀个主流的集成开发环境,企业中使用较为普遍
• VS2022 包含了:编辑器+编译器+调试器,功能强大,所以我们不需要另外的调试器了。
• 直接安装即可使用,基本不用额外配置环境,上手容易
• 默认界面是中文的,初学者友好
• 我自认为VS的界面看起来很崭新,给人一种舒适感,当然界面的自定义可以满足你的审美需求
缺点: 功能丰富,安装包大,占用空间多。
3.main函数——程序的入口
main函数又叫主函数,在C语言的程序中,不管有多少行代码,都是从main函数开始执行,也就是说main函数是C语言程序的入口。
注意:main函数出现的位置可以是任意的。
main函数使用时,一是需要在前面加int,这代表main函数返回的函数值为整型数值,这样,程序中结尾处用“return 0”就能说的通了。二是需要在后面加“()”。
4.库函数
C语言中规定了一组函数,这样的函数再由不同的编译器厂商根据一定的标准来实现,最后再提供给程序员使用。这样的一组函数放在一个库中,即函数库,而这些函数则被称为库函数。当然,不同的编译器的库函数略有差异。库函数繁多,这里大家可以根据自己的需求和兴趣在cplusplus.com/reference/clibrary/https://cplusplus.com/reference/clibrary/这个链接中去了解更多库函数。
注意:我们在编制程序时,往往会使用到库函数,而使用库函数时,程序需要包括头文件,这时,我们只需要在程序的开头输入
#include<stdio.h>
输出函数
当我们编写好程序后,一般会使用print函数来输出我们想要的结果,并把它打印到屏幕上,这就让代码实现的功能能够真实地被体现出来
5.关键字
C语言中有一批具有特殊意义的字符串,这些字符串被称为保留字,或者关键字。
这是C语言中常见的关键字。后面我也会单独写一篇博客文章来捋一下这32个关键字。C 关键词 - cppreference.comhttps://zh.cppreference.com/w/c/keyword这里面有C语言中关键字的全部介绍,感兴趣的朋友可以去多了解一下。
6.字符的存储
我们都知道,计算机上的数据都是通过二进制的形式来存储的,那么像a、b、c这样的字母以及#、@、|这样各种各样的字符是怎样在计算机中存储的呢?
如果我们每个人给这些字符中的每个字符编⼀个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C 语言中的字符就遵循了 ASCII 编码的方式。
里面有全面的字符及对应ASCll值
这里可以看出字母a的ASCll数值为97。
我们不用记住ASCll码表,只需要记住我列出来的这些就足够使用。
•大写字母A~Z的ASCll码值是从65~90
•小写字母a~z的ASCll码值是从97~122
•小写字母与大写字母的ASCll码值之差为32
• 数字字符0~9的ASCII码值从48~57
• 换行 \n 的ASCII值是:10
• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法通过print函数打印在屏幕上观察
7.\0是字符串的结束标志
那C语言中如何表示字符串的呢,其实,像”abdfk“这样一个字符串就是由被双引号括起来的字符组成。而计算机在读取字符串时,遇到其末尾的
\0
就会停止读取,所以\0是字符串结束的标志
当我们开始调试程序,从监视器中我们可以看见字符串的末尾还有"\0";
让我们一起来看这个例子,看你有想到吗?
我们可以看见在打印数组arr1时,末尾出现了一堆乱码,而这些乱码是因为数组arr1是由多个字符常量组成的,所以末尾没有\0,所以计算机在读取时,它不知道什么时候结束,所以给arr1分配了一些随机值。
而数组arr2本身就就是由字符串常量初始化的,末尾就有\0作为结束的标志。
对于arr3呢,我们在第一种情况下在由字符常量组成的数组的末尾加入了\0,最后运行程序时,打印可以正常停止。
8.转义字符
也许在前面的代码中,你看见\0和\n很纳闷这是啥,其实在字符中有一组特殊的字符是转义字符,转义字符顾名思义就是转变意义的字符。
• \? :在书写连续多个问号时使用,防止他们被解析成三字⺟词,在新的编译器上没法验证了。
• \' :用于表示字符常量'。
• \" :用于表示⼀个字符串内部的双引号。
• \\ :用于表示⼀个反斜杠,防止被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。
• \n :换行符。
• \r :回车符,光标移到同⼀行的开头。
• \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀行的同⼀列。 下面2种转义字符可以理解为:字符的8进制或者16进制表示形式。
• \ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X。
• \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0。
• \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其 ASCII码值是0。
接下来,我会着重介绍几个常用的转义字符。
\n
\n转义字符转义为换行符,在输出时可以使光标跳到下一行去,从而使输出结果被分成两行,常常用来区别开不多个输出结果。
这两张图应该可以让你更清楚地明白\n的作用。
\t
\t转义字符转义为制表符,在输出时可以使光标移到下一个水平制表位,其为4或8的倍数,在我的编译器上是8的倍数。
这样可以清晰的看出来读取一个\t转义字符就可以使光标补齐一个完整的水平制表位,即8位。
\b
\b转义字符转义为退位符,即使得光标回退一位,但不删除回退到这一位所在的字符,只是将其覆盖了。
9.语句和语句的分类
空语句
#include<stdio.h>
int main()
{
;//空语句
return 0;
}
一个分号就是一个句子,只有一个分号的句子就是空语句。
空语句可以用于等待某个事件的发生,特别是用在while循环语句中。空语句中还可以用于为某段程序提供标号,表示程序的执行位置。
表达式语句
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
表达式语句就是在表达式后面加上“;”。
表达式常见的有以下种类:
算术表达式
例如a+b、1+2、a+1、5.0 + sqrt(4.0)都是算术表达式。但是其结果不能被保留,所以没有实际意义。其运算过程和数学中的规则一样,有括号先做括号内的子表达式。有多层括号,先运算最里层。同一层,负号优先运算,再接下来运算乘除,再加减;同一优先级从左到右进行运算
赋值表达式
“=”为赋值运算符,其术语为“变量=表达式”。
先计算赋值运算符右侧表达式的值,然后将赋值运算符右侧表达式的值赋给左侧的变量,再将赋值运算符左侧的变量的值作为表达式的值。
#include<stdio.h>
int main()
{
int a=1;
int b = 2;
int c = a + b + 2;//将a+b+2这个算术表达式的值赋值给c,而c的值即为这个表达式的值
printf("%d\n",c);
return 0;
}
函数调用语句
函数调用时也会加上分号,这就是函数调用语句
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("hehe\n");//函数调⽤语句
int ret = Add(2, 3);//函数调⽤语句
return 0;
}
复合语句
成对括号中的代码被称为代码块,也被称为复合语句。
int main()
{
int i = 0;
int arr[10] = {0};
for(i=0; i<10; i++) //for循环的循环体的⼤括号中的就是复合语句
{
arr[i] = 10-i;
printf("%d\n", arr[i]);
}
return 0;
}
控制语句
控制语句用于控制程序的执行流程,以实现程序结构的各种方式(C语言支持循环结构、选择结构、顺序结构),它们由九种控制语句构成。
可以分为这几类:
条件判断语句也叫分支语句:if语句、switch语句;
循环语句:for语句、while语句、do while语句;
转向语句:break语句、continue语句、go to语句、return语句。
注释
在编写程序时,为了让自己和其他程序员能够更好地去读懂程序,我们通常会写程序的注释。一个清晰简洁、易懂的注释能够提高自己编写程序的效率,也可以提高其他程序员阅读程序的正确率。
好的注释能够帮助我们理解代码,但是也不要过度解释,过度解释会让程序页面变得冗杂。
常见的注释形式
C语言中有两种注释方式。
//的形式
这种注释方式是在代码的后面加上//,然后在//后面加上注释。
这种注释只适用于给单行的代码注释。
//这是一行注释,可以放在首位
int x=0;//这也是注释,是可以放在代码后面的
/**/的形式
这种注释方式是以/*代码*/的形式注释的。
这种注释可以适用于给多行的代码进行注释。
/*这是注释实例
int main()
int x=0;
char a;
*/
在/**/内的都属于注释。
总结
这是我第一阶段学习C语言的一些学习心得,内容还不够完善,希望自己可以一步一步做的更好。
感谢你的阅读,如果C语言小白有什么问题可以问我,也可以和我一起学习,一起监督。如果有大佬阅读完,欢迎你们给予我批评和建议。