写在前面:
- 本系列专栏主要介绍C语言的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程。
- 除了参考下面的链接教程以外,笔者还参考了其它的一些C语言教材,笔者认为重要的部分大多都会用粗体标注(未被标注出的部分可能全是重点,可根据相关部分的示例代码量和注释量判断,或者根据实际经验判断)。
- 如有错漏欢迎指出。
参考教程:C语言程序设计从入门到进阶【比特鹏哥c语言2024完整版视频教程】(c语言基础入门c语言软件安装C语言指针c语言考研C语言专升本C语言期末计算机二级C语言c语言_哔哩哔哩_bilibili
一、概述
1、计算机程序
(1)所谓程序,就是一组计算机能识别和执行的指令,只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作。
(2)计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。
(3)计算机的工作过程:
2、计算机语言
(1)计算机语言就是人和计算机交流信息的、计算机和人都能识别的语言。
(2)计算机语言发展阶段:
①机器语言(由0和1组成的指令)。
②符号语言(又叫汇编语言,用英文字母和数字表示指令)。
③高级语言(接近于人的自然语言和数学语言,如C语言)。
3、C语言的主要特点
(1)语言简洁、紧凑,使用方便、灵活。
①C语言只有37个关键字、9种控制语句。
②C程序书写形式自由,源程序短。
(2)运算符丰富。
①C语言有34种运算符。
②C语言把括号、赋值、强制类型转换等都作为运算符处理。
③C语言的表达式类型多样化。
(3)数据类型丰富。
①C语言的数据类型有整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型。
②C99又扩充了复数浮点类型、超长整型(long long)、布尔类型(bool)。
③指针类型数据能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。
(4)具有结构化的控制语句。
①如if…else语句、while语句、do…while语句、switch语句、for语句,这些都是C语言所拥有的语句。
②C语言允许用函数作为程序的模块单位,便于实现程序的模块化。
③如此看来,C语言是完全模块化和结构化的语言。
(5)语法限制不太严格,程序设计自由度大。
①C语言对数组下标越界不做检查。
②C语言对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用。
③C语言允许程序编写者有较大的自由度,因此放宽了语法检查。
(6)用C语言编写的程序可移植性好。
①C的编译系统简洁,很容易移植到新系统。
②C程序在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码。
③几乎所有计算机系统都可以使用C语言。
(7)允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。
(8)生成目标代码质量高,程序执行效率高。
二、最简单的C语言程序
1、注释
(1)单行注释:在编写代码时,只要出现“//”(“///”不算),那么该行后面的内容都是代码的注释,不会影响程序的功能。
(2)多行注释:多行注释以“/*”开头,以“*/”结尾,二者之间的内容全是程序的注释,不会影响程序的功能。
2、主函数
(1)主函数是一个程序的入口,每个程序必须有且只能有一个主函数。
(2)举例:
#include<stdio.h> //要使用库函数,就要包含stdio.h文件(std-standard i-input o-output)
//int是整型的意思(main前面的int表示的是main函数调用返回一个整型值)
int main() //主函数--程序的入口(必须有且只能有一个)
{
printf("Hello world\n"); //在屏幕上输出“Hello world”
printf("Hello world\n"); //print function -- printf - 打印函数
printf("Hello world\n"); //双引号内的是输出内容,“\n”代表换行
printf("Hello world\n"); //printf属于库函数,即C语言本身提供给我们使用的函数
printf("Hello world\n");
return 0; //return--返回,这里是返回整数0
}
/*
void main() //主函数还有这种写法,但是已经过时了
{
}
*/
3、子函数
(1)子函数是程序员自己设计的函数,用于实现程序员需要的功能并封装起来,往后使用这个功能时直接调用自设计的子函数即可,而不需要把该功能对应的代码重写很多遍。
(2)如果子函数的调用在实现之前,那么在调用子函数前需要对子函数进行声明(声明格式为函数首部末尾加一个分号)。
(3)举例:
#define _CRT_SECURE_NO_WARNINGS 1 //使用Visual Studio编译时需要添加,否则可能会报错
#include <stdio.h>
int Add(int x, int y) //函数有两个整型参数x、y
{
int z = x + y; //定义变量z,并赋值为x和y的和
return z; //将x和y的和返回给主函数
}
int main()
{
int Add(int x, int y); //对子函数Add进行声明
int num1 = 0; //定义变量num1
int num2 = 0; //定义变量num2
int sum = 0; //定义变量sum
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2); //输入两个数据,以整数的形式分别赋给num1和num2
sum = Add(num1, num2); //调用自设计的求和函数Add求num1和num2的和,结果赋给sum
printf("sum = %d\n", sum); //输出sum(“%d”的位置对应sum的值)
return 0;
}
(4)有关子函数的更多内容会在后面再详细介绍。
4、C语句
(1)在前面的例子中可以看到,一个函数包含声明部分和执行部分,执行部分是由语句组成的,语句的作用是向计算机系统发出操作指令,要求执行相应的操作。
(2)C语句分为以下五类:
①控制语句:用于完成一定的控制功能,如下所示(括号中是一个“判别条件”,“…”表示内嵌的语句):
条件语句:if()…else…
循环语句:for()…
循环语句:while()…
循环语句:do…while()
结束本次循环语句:continue
终止执行switch或循环语句:break
多分支选择语句:switch
从函数返回语句:return
转向语句:goto(非必须不建议使用)
②函数调用语句:由一个函数调用加一个分号构成。
③表达式语句:由一个表达式加一个分号构成。
④空语句:只有一个分号,它不执行任何操作,可以用于占位。
⑤复合语句:用花括号“{}”把一些语句和声明括起来,整体称为复合语句(或语句块)。
5、C语言程序的结构特点
(1)一个程序由一个或多个源程序文件组成(小程序往往只包括一个源程序文件)。
(2)一个源程序文件中可以包括三个部分:
①预处理指令:“#include <stdio.h>”等。
②全局声明:在函数之外进行的数据声明。
③函数定义:每个函数用来实现一定的功能。
(3)函数是C程序的主要组成部分。
①一个C程序是由一个或多个函数组成的。
②C程序必须包含一个main函数(且只能有一个)。
③每个函数都用来实现一个或几个特定功能。
④被调用的函数可以是库函数,也可以是自己编制设计的函数。
(4)一个函数包括两个部分:
①函数首部(函数的第一行):
②函数体:
[1]声明部分:定义在本函数中所用到的变量,对本函数所调用函数进行声明。(有时可省略)
[2]执行部分:由若干个语句组成,指定在函数中所进行的操作。(可以为空,即不进行任何操作,但没必要)
(5)C程序总是从main函数(主函数)开始执行。
(6)数据声明和语句最后必须有分号。
(7)C语言本身不提供输入输出语句。(上面使用的printf函数是库函数)
(8)程序应当包含注释,增加可读性。