目录
2.、C语言的历史与辉煌(为什么大家都推荐C语言作为计算机初学语言)
你是否想要揭开计算机编程的神秘面纱?那么,不妨从C语言开始,它是计算机编程的基石,带你领略编程的魅力和乐趣。接下来希望我的文章能让大家对C语言拥有有一定的认识。
1、 什么是C语言?
人和人交流需要使用语言,通常是汉语,英语等。
同样的,人和计算机交流也需要使用语言,计算机语言便因此应运而生。
目前人类已有的计算机语言已达上千种,而C语言便是众多语言中的一种,像C++/java/python都是计算机语言。
2.、C语言的历史与辉煌(为什么大家都推荐C语言作为计算机初学语言)
C语言最初是作为unix系统的开发工具而发明的。
截止到 2021 年,C语言已经发布了将近 50 年,是不折不扣的“大叔”或者“大爷”,但是,C语言在编程界依然非常流行;2019 年,C语言由于速度快、平台独立的特性,在世界编程语言排行榜中夺得第二名。
从特性方面讲,C语言是一种中级语言,它结合了低级语言速度快的特点,以及高级语言开发方便的特点;从应用方面讲,C语言也是一种高级语言,它可以用来编写电脑软件,或者开发嵌入式系统。
当需要开发一种新的编程语言时,C语言是最好的选择,因为C语言执行效率非常高,仅次于汇编语言。例如,目前常用的 Python、PHP、C++、Objective-C 都是在C语言的基础上进行开发的。 因此,学习了C语言之后,在学习其它语言的时候就会相对简单一些。
欧克,到目前为止,大家应该明白了C语言的重要性吧,后面我将为大家介绍C相关知识。
3、 编译器的选择和使用
3.1 编译和链接
C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身是无法执行的,必须通过编译器编译和链接器的链接,生成二进制可执行文件,可执行文件才能执行。(计算机语言识别的是二进制指令)
C语言代码是放在.c后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译和链接两过程。
一个工程一般都会有多个源文件组成,如下图所示,演示了源程序经过编译器和链接器处理的过程。
1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
2.多个目标和库文件经过链接器处理生成对应的可执行程序(. exe文件)
3.2 编译器的选择
想要拥有流畅的操作当然离不开一个好的工具,因此,在选择编译器上当然要选择一个既简单又通用的工具。
因此,我就直接推荐编译器vs2022了(防止有选择困难症的人难办)。vs2022属于集成开发环境。
图标如下
集成开发环境(IDE)就是集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件服务器。包括代码编译器,调试器和图形用户界面等工具。
是不是很强?一个软件直接搞定。下面我将介绍一下它的优缺点(缺点是太强了)。
3.3 vs2022的优缺点
优点:
1:vs2022是一个主流的集成开发环境,企业中使用较为普遍
2:vs2022包含了:编辑器+编译器+调试器,功能强大
3:直接安装即可使用,基本不用额外配置环境,上手容易
4:默认界面是中文的,对初学者友好
缺点:
功能太多了,导致安装包大,占用空间多。(太强大也是一种缺点)
这篇文章就不对比其他的编译器了,想看看其他编译器的可以去搜一下。这里就直接推荐我最适合新人的编译器了哈。
下载方法:
安装教程:
3.4 VS项目和源文件、头文件介绍
在VS上写代码,我们是要创建新项目的,直接新建项目就可以了。
在项目中可以添加源文件和头文件。
C语言把.c 为后缀的文件称为源文件,把.h 为后缀的文件称为头文件。
3.5 在VS上创建新项目
3.5.1 写代码前的步骤
1、创建项目(代码最好放在项目中进行管理和维护)
2、创建.c文件
3、写C语言代码,要严格按照C语言的语法来写!!
3.5.2 项目名称
1、项目名称最好有自己的实际意义
2、项目名称最好不要有中文
3、不要使用特殊符号
3.5.3 项目存储路径
1、代码的位置要放到一个自己能找到的地方
2、代码路径不要包括空格、特殊字符、中文字符。
在vs2022上运行代码快捷键:
ctrl+F5
Fn+ctrl+F5(有的需要加上Fn)
4 、main函数
每个C语言程序不管有多少行代码,都是从 main 函数开始执行的,main 函数是程序的入口,main 函数也被叫做:主函数。main 前的 int 表示 main 函数执行结束的时候返回一个整形类型的值。所以在 main 函数的最后写return 0; 正好开始呼应。(有点抽象)简单来说,程序的执行是从main函数的第一行开始执行的,有main函数程序才能被执行
main函数样子
int main ()//这个括号是英文符号
{
return 0;//分号也是英文分号
}
代码就写在大括号里
1、main函数是程序的入口
2、 main函数有且仅有一个
3、即使一个项目中有多个.c文件,但是只能有一个main函数(程序入口只能有一个)
5、 printf 和库函数
1 printf("welcome to China.");
代码中使用printf函数,实现了在屏幕上的信息的打印。如下图
printf函数也就是库函数。
使用库函数是需要包含头文件的,比如:printf函数需要包含的就是stdio.h这个头函数,具体方法如下
1 #include <stdio.h>
那什么是库函数呢?
为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数,在这个基础上一些编译器厂商可能会额外扩展提供部分函数(这些函数其他编译器不一定支持)
一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。
6 、关键字介绍
C语言中有一批保留的名字的符号,比如:int、 if、retuen,这些符号被称为保留字或者关键字。是编程中用于指定数据类型、控制结构等功能的保留字。
~关键字都有特殊的意义,是保留给C语言使用的
~程序员自己在创建标识符的时候是不能和关键字重复的
~关键字也是不能自己创建的。
下面是C语言的32个常用关键字
注:在C99标准中加⼊了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字。 ⼀些关键字⼤家可以去了解⼀下,不过使⽤最多的还是上⾯的32个关键字。
常见关键字的作用介绍如下
1. 数据类型关键字:包括int(整数)、float(浮点数)、double(双精度浮点数)、char(字符)和void(无类型)。
2. 控制结构关键字:包括if(条件语句)、else(条件语句的另一种选择)、switch(多条件选择语句)、case(switch语句中的选项)、while(循环语句)、do(循环语句)、for(循环语句)、break(跳出循环)和continue(继续下一次循环)。
3. 存储类别关键字:包括auto(自动存储变量)、register(寄存器存储变量)、extern(外部声明变量)和static(静态存储变量)。
4. 其他关键字:包括return(从函数返回)、const(定义常量)、volatile(指示变量可能被外部因素更改)、typedef(为数据类型定义别名)和enum(枚举类型)。
了解这些关键字有助于编写规范的C语言程序。
想了解更多的可以进入下面网址,观看更多关键字详解
C 关键词 - cppreference.comhttps://zh.cppreference.com/w/c/keyword(C语言所以关键字介绍)
7、字符与ASVLL编码
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。单个字符的打印可以使用%c来指定格式。
我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这就叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语言中的字符就遵循了ASCII 编码的⽅式。
强调一下哈,千万不要想着全部背下来啊!!!咱们是来学习技术的,不是来练习最强大脑的。需要的时候可以查这张表格。切记切记!!!
参考
ASCII 码表 - cppreference.comhttps://zh.cppreference.com/w/cpp/language/ascii不过我们可以掌握几组特殊的数据:
• 字符A~Z的ASCII码值从65~90
• 字符a~z的ASCII码值从97~122
• 对应的大小写字符(a和A)的ASCII码值的差值是32
• 数字字符0~9的ASCII码值从48~57 • 换⾏ \n 的ASCII值是:10
• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察
• 字符其实也属于整型家族
比如:可打印字符展示(32-127)
8、字符串和\0
C语言中是如何表示字符串的呢?使用双引号括起来的一串字符就被称为字符串,如:"abcdefg"
注意,这里使用的符号都是英文符号。
字符串的打印格式可以使用%s来指定,也可以直接打印
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
int main ()
{
//在字符串的结尾隐藏着一个\0 ,这个 \0 是字符串结束的标志
"abcdef";//a b c d e f \0
"China";//C h i n a \0
return 0;
}
注:\0需要通过监视才能看到
对于字符串"abcdef",我们实际上看到六个字符:a b c d e f 但是实际上在末尾还隐藏着一个 \0 转义字符。\0是字符串结束标识。
接下来我们来验证一下 \0 的作用
我们知道arr1中有a b c \0 。因此arr1在打印完abc后就停止了。而arr2中只有a b c,所以后面还打印了一些随机值。由此,可以说明\0的作用以及重要性。
看到这相信大家也累了,我来给大家讲一个笑话当中中场休息吧。
有位来自农村的同学,上大学后第一次接触电脑,在上计算机课程的时候,老师让他们把这个代码敲出来,并让它运行起来。然后这位同学就哐哐哐的敲代码,但是呢由于不太熟练,导致敲错了,等他把代码运行起来的时候,屏幕上出现了一堆烫烫烫烫烫,把这位同学吓到直接将电脑关机并大声对老师说:老师,老师,电脑说它好烫。哈哈哈哈哈哈哈哈哈!
9、监视窗口的打开和作用
9.1、打开
言归正传,接下来说一下怎么观察这个现象,我们要在调试中找到监视功能,它在vs2022里面的路径是【调试】->【窗口】->【监视】,但当我们打开此路径,我们并没有找到监视的功能。
这是怎么个一回事,你这不是白说了吗?不要着急,之所以找不到监视是因为监视必须是代码在调试的条件下进行,所以按下ctrl+F10,开始调试程序,此时再来到刚才的路径,就能找到监视的窗口了。
在进入调试状态后,比如想要监视某一个变量,添加本代码变量于监视窗口中添加完待监视项后,按f10 代码会一步一步运行,待监视项便也随着代码运行进行改变。(监视窗口打开后输入字符串即可开始监视)
我们可以发现对于字符串"abc",我们实际上看到了3个字符:a,b,c,但是实际上在末尾还隐藏⼀个 \0 的 转义字符, \0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者 strlen() 计算字符串⻓度的时候,遇到 \0 的时候就⾃动停⽌了。
9.2、作用
1、便于理解代码,对代码工作原理运行顺序的理解都很有帮助
2、可以方便地在大型工作表中检查、审核或确认公式计算及其结果。使用监视窗口,无需反复滚动或定位到工作表的不同部位。
10、转义字符
转义字符就是转变字符的意思,哈哈,是不是通俗易懂?前面的\n、\0等都是转义字符
C语言中向这样的转义字符有很多,具体如下
• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \' :⽤于表⽰字符常量'(想打印单引号时用\将'转换成字符)
• \" :⽤于表⽰⼀个字符串内部的双引号(想打印双引号时用\将'转换成字符)
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。(相当于\\=1个\)
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。(覆盖前面那个字符)
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个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.
对于转义字符需要能在字符串中识别出来。
转义字符参考
转义序列 - cppreference.comhttps://zh.cppreference.com/w/c/language/escape
11、语句和语句的分类
凡是语言类都需要语句,C语言也是如此。
C语言的代码是由一条一条语句构成的,C语言中的语句可以分为以下几类
空语句
表达式语句
函数调试语句
复合语句
控制语句
后面一个一个介绍。
11.1 空语句
空语句是最简单的,一个分号就是一条空语句。
#include <stdio.j>
int main()
{
;//空语句
return 0;
}
空语句一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写一个空语句。
11.2表达式语句
表达式语句就是在表达式的后边加上分号。如下
#include <stdio.h>
int main()
{
int a = 10;
int b = 0;
b = a + 7;//表达式语句
return 0;
]
11.3函数调用语句
函数调用的时候,也会加上分号,就是函数调用语句。
#include <stdio.h>
int Add(int x,int y)
{
return x+y;
}
int main()
{
printf("China");//函数调用语句
int ret = Add (1,2);//函数调用语句
return 0;
}
11.4复合语句
复合语句就是前面讲过的代码块,成对括号中的代码就构成了一个代码块,也被称为复合语句。
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] ={0};
for(i=0; i<10; i++)//for循环的循环体的大括号中的就是复合语句
{
arr[i] = 10-1;
printf("%d\\n",arr[i]);
}
return 0;
}
11.5控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分⽀语句:if语句、switch语句;
2. 循环执⾏语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
12、注释是什么,为什么要写注释?
12.1注释是什么
注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
注释是给程序员⾃⼰,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
当然不写注释可能会让后期阅读代码的⼈抓狂。 写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找⼯作的时候,写代码时 留下必要的注释也会给⾯试官留下更好的印象。
12.2注释该怎么写?
在编写C语言源代码时,应该多使用注释,这样有助于对代码的理解。在C语言中有两种注释方式:
- 一种是以
/*
开始、以*/
结束的块注释(block comment); - 另一种是以
//
开始、以换行符结束的单行注释(line comment)。
可以使用/*
和*/
分隔符来标注一行内的注释,也可以标注多行的注释。例如,在下列的函数原型中,省略号的意思是 open() 函数有第三个参数,它是可选参数。注释解释了这个可选参数的用法:
1 int open( const char *name, int mode, … /* int permissions */ );
可以使用//
插入整行的注释,或者将源代码写成两列分栏的格式,程序在左列,注释在右列:
1 const double pi = 3.1415926536; // pi是—个常量
在 C99 标准中,单行注释正式加入C语言,但是大部分编译器在 C99 之前就已经开始支持这种用法。有时候,其被称作“C++风格”的注释,但实际上,其源自于C的前身 BCPL。
在引号中,如果采用/*
或//
分隔一个字符常量或字符串字面量(string literal),它们都不会被视为注释的开始。例如,下面语句就没有注释:
1 printf("Comments in C begin with /* or //.\n" );
预处理器仅通过检查注释的结束符来检测注释中的字符,因此,不能嵌套块注释。然而,可以使用/*
和*/
注释包含单行注释的源代码:
1 /* 暂时注释掉这两行:
2 const double pi = 3.1415926536; // pi是一个常量
3 area = pi * r * r; // 计算面积
4 暂时注释到此 */
如果想要注释掉包含块注释的部分程序,可以使用条件预处理命令:
1 #if 0
2 const double pi = 3.1415926536; /* pi是一个常量 */
3 area = pi * r * r ; /* 计算面积 */
4 #endif
预处理器会把每个注释都替换成一个空格。因此,min/*max*/Value
变成两个标记min Value
。