二、C语言基础知识

声明

本文内容大多取自《高级语言程序设计一书》,为本人学习笔记记录,切勿用于商业用途。

第一节 C 语言发展和特点

C 语言是当今最流行的计算机语言之一,是一种结构化的高级语言。

一、C 语言发展
C 语言源于 ALGOL60 语言,于 20 世纪 60 年代初提出。
1963 年,英国剑桥大学将 ALGOL 60 语言发展成为组合程序设计语言(CPL)。 1967 年,英国剑桥大学的 Martin Richards 对 CPL 进行简化,开发出基本组合程序设计语言 (BCPL)。
1970 年,美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础,设计出很简单且很接近硬 件的 B 语言(取 BCPL 的首字母)。
1972 年,美国贝尔实验室的 D.M.Ritchie 在 B 语言的基础上最终设计出了一种新的语言,他取 了 BCPL 的第二个字母作为这种语言的名字,即 C 语言。
1975 年,UNIX 第六版发布后,C 语言终于获得了计算机专业人士的广泛支持。
1978 年,美国贝尔实验室正式推出了 C 语言。
1983 年,美国国家标准协会(ANSI)根据 C 语言问世以来的各种版本,对 C 语言发展和扩充 制定了第一个 C 语言标准草案,称为 83 ANSIC。
1989 年,ANSI 发布了一个完整的 C 语言标准 ANSI X3.159-1989,称为 ANSI C 或 C89。
1990 年,国际标准化组织(ISO)接受 C89 为 ISO 国际标准,也称为 C90。 1999 年,ISO 对 C 语言标准进行修订,发布了新的 C 语言国际标准——ISO/IEC9899:1999, 简称 C99。

二、C 语言特点

C 语言的主要特点可以概括如下:
1)结构化语言
2)运算能力强大
3)数据类型丰富
4)具有预处理能力
5)可移植性好
6)程序执行效率高
7)程序设计自由度大.

第二节 C 语言基本词法

—、字符集
字符是组成语言最基本的元素。C 语言中允许出现的所有字符的集合称为 C 语言的字符集,由 字母、数字、空格、标点和特殊字符组成。C 语言的字符集就是 ASCII 字符集,主要包括以下几种:
1)阿拉伯数字:0、1、2、…、9(共 10 个)。
2)大小写英文字母:A〜Z、a〜z(共 52 个)。
3)非字母、非数字的可显示字符(33 个)。
4)转义字符:ASCII 字符集中还有一些字符不能显示在显示器上,称为不可显示字符,例如回 车换行符、制表符等。转义字符是由反斜杠“\”后面跟单个字符或若干个字符组成,将在第三章第 二节介绍。

二、关键字

C 语言中具有特殊含义的单词称为“关键字”,又称“保留字”,主要用于构成语句。关键字 是由系统预先定义的,不能用于其他目的。 C 语言共有 32 个关键字,所有的关键字均由小写字母组成,其主要含义如表 2-2 所示。
在这里插入图片描述
三、标识符

标识符是字符的序列,除了库函数的函数名等由系统定义外,其余均由用户自行定义。用户根 据需要对 C 程序中用到的变量、符号常量、自定义函数等进行命名,形成用户标识符。

C 语言规定,用户标识符仅由大小写英文字母、数字和下画线组成,且第一个字符不能是数字。 下面给出一些正确和错误的标识符实例,如表 2-3 所示。
在这里插入图片描述
ANSI C 规定,标识符可以是任意长度。但由于 C 语言编译系统和机型的不同,可以识别的标 识符长度也不同。例如某些版本 C 语言规定标识符前 8 位有效,当两个标识符前 8 位相同时,则被 认为是同一个标识符。Microsoft Visual C++ 6.0 对此基本没有限制。

标识符中的英文字母是区分大小写的。

用户自定义的标识符既不能是 C 语言的关键字,也不能与用户已编写的函数或 C 语言的库函数 重名。

四、词汇分类

C 语言的词汇分为六类,即常量、标识符、关键字、运算符、注释符和分隔符。

(1)常量
C 程序运行中其值不发生变化的量,例如-1、5.6 等。
(2)标识符
C 程序中使用的变量名、函数名和标号等统称为标识符。
(3)关键字
关键字是由 C 语言规定的具有特定意义的字符串。
(4)运算符
C 语言中用于计算的符号,如+(加)、-(减)、*(乘)和/(除)等。
(5)注释符
C 语言的注释符有两种,一种是以“/*”开头,并以“*/”结尾的多行注释。在“/*”与“*/” 之间的内容即为注释;另一种是以“//”开头的单行注释,直接在需要注释的地方(行首)加上 即可。两 者的区别在于,第一种注释可以跨行,第二种注释不可以跨行。编译源程序时,不对注释进行任何 处理。注释可以出现在程序的任何位置,可有多行,但不可嵌套。注释的作用是为用户提示或解释 程序的意义。此外,在调试程序时对暂不使用的语句也可用注释符括起来,使翻译程序跳过而不作 处理,待调试结束后再去掉注释符。
在这里插入图片描述

(6)分隔符
C 语言的分隔符包括逗号和空格两种。逗号主要用在类型说明和函数参数表中,分隔各个变量; 空格多用于语句各单词之间,作为间隔符。需要注意的是,在关键字和标识符之间必须要有一个以 上的空格进行间隔,否则将会出现语法错误。例如把“int a;”写成“inta;”,则 C 语言的编译程序 会把 inta 当成一个标识符处理,其结果必然出错。

第三节 C 语言基本语句分类

按照语句功能或构成的不同,可将 C 语言的语句分为数据定义语句赋值语句函数调用语句表达式语句流程控制语句复合语句空语句等等,C 语言的每个语句都以分号“;”结束。
(1)数据定义语句
用于定义 C 程序中使用的各种能存放数据的对象的名称和属性。
(2)赋值语句
形如“变量=表达式;”的语句,其功能是计算表达式的值并赋予变量。
(3)函数调用语句
形如“函数名(实际参数表);”的语句,其功能是调用指定的函数。
(4)表达式语句
形如“表达式;”的语句,仅由表达式加上分号“;”组成,执行表达式语句就是计算表达式的值, 例如 y+z;。C 语言中,赋值和函数调用都是表达式,所以赋值语句和函数调用语句都是特殊的表达 式语句。
(5)流程控制语句
用于控制程序执行的流程,以实现程序的各种结构,它们由特定的语句关键字组成。C 语言有 九种控制语句,可分为以下三类。 1)选择控制语句:if 语句和 switch 语句。 2)循环控制语句:while 语句、do-while 语句和 for 语句。 3)转移语句:goto 语句、break 语句、continue 语句和 return 语句。
(6)复合语句
把多个语句用一对花括号{ }括起来组成的一个语句称为复合语句。在程序中应把复合语句看成 是单条语句,而不是多条语句。需要注意的是,复合语句内部的每条语句都必须以分号结尾,而在 花括号外不能加分号。 例如,
{
int a,b;
a=a+b;
printf("%d%d\n",a,b);
}

(7)空语句
无任何操作的语句,即只由分号组成的语句,一般在程序中用作空循环体。 例如,

while( (c=getchar()) != '\n' );

这里的循环体为空语句,表示循环体什么都不做。
(8)其他
包括编译预处理命令、自定义类型语句等。 上述各种语句的格式和功能将在后续章节详细介绍。

第四节 C 程序基本组成

C 程序是由语句组成的,通常包括一个或多个函数,其中有且只有一个函数称为主函数,其函 数名为 main。
下面给出几个简单的 C 程序例子。
【例 2-1】从键盘输入两个整数,计算其乘积。
程序代码如下:

/*【例 2-1】从键盘输入两个整数,计算其乘积。*/

#include<stdio.h>
int main(void)                                  //主函数
{
	int n1,n2,result;                        /*定义保存两个整数及其乘积的变量*/
	printf("请输入两个整数,以回车或空格键键隔开:");
	scanf("%d%d",&n1,&n2);                 /*从键盘输入两个整数并分别保存到变量 n1 和 n2*/
	result=n1*n2;                         /*计算整数 n1 和 n2 的乘积并保存到变量 result*/
	printf("乘积结果是:%d\n",result);   /*输出变量 result 中的两个整数的乘积*/
	return 0;



}


}

`运行结果如下:

请输入两个整数,以回车或空格键键隔开:1 3
乘积结果是:3
Press any key to continue


【例 2-2】从键盘输入两个整数,计算其乘积(利用用户自定义函数实现)。

/*【例 2-2】从键盘输入两个整数,计算其乘积(利用用户自定义函数实现)。*/
#include<stdio.h>
int mul(int a,int b)     /*定义一个函数 mul*/
{
	int c;                /*定义一个整型变量 c*/
	c=a*b;                /*计算两个整数的乘积并保存到变量 c*/
	return c;              /*返回变量 c 中的两个整数的乘积*/

}

int main(void)                                       /*主函数*/
{
	int n1,n2,result;                                /*定义保存两个整数及其乘积的变量*/
	printf("请输入两个整数:以空格或回车间隔:"); 
	scanf("%d%d",&n1,&n2);                           /*从键盘输入两个整数并分别保存到变量 n1 和 n2*/
	result=mul(n1,n2);                               /*调用函数 mul 计算整数 n1 和 n2 的乘积并赋值给变量 result*/
	printf("乘积结果为:%d\n",result);                /*输出变量 result 中的两个整数的乘积*/
	return 0;
	
}

运行结果如下:

请输入两个整数:以空格或回车间隔:1  5
乘积结果为:5
Press any key to continue


综上所述,C 程序的组成特点如下:
1)每个 C 程序由一个或多个函数组成。
每个 C 程序有且仅有一个主函数,除主函数外,可以没有其他函数;也可以有一个或多个其他 函数。
2)函数是 C 程序的基本单位。每个函数(包括主函数)是由函数首部和函数体两部分组成, 即:

函数首部       返回值类型 函数名(类型 形式参数名,...) 
函数体        { 
                     数据定义部分
                      实现函数功能的语句序列
              }

其中,函数名后面的一对圆括号( )中写出函数要用到的形式参数,当没有形式参数时写 void; 一对花括号{ }是函数体的界定符,其中的内容称为函数体。

3)C 程序中每一语句后面都以分号“;”作为语句的结束,但预处理命令、函数首部和右花括 号之后不能加分号
4)C 语言本身没有输入/输出语句,而是通过调用库函数 scanf( )printf( )getchar( )putchar( )实现的。
5)C 程序的任意位置都可以加注释//,注释可有多行,但不可嵌套。
6)C 程序的书写格式灵活,一行内可书写多条语句,一条语句也可以写在多行上,可以任意插 入空格和回车。
7)C 程序的执行总是从主函数开始,并在主函数结束。主函数和其他函数的位置是任意的,其 他函数总是通过函数调用语句被执行。
8)C 程序中可以有预处理命令(例如 include 命令),通常预处理命令应放在程序的最前面。
9)主函数可以调用任何其他函数,任何其他函数之间可以互相调用,但不能调用主函数。

为了便于阅读、理解和维护 C 程序,在书写程序时应遵循以下规则:

  • 一个说明或一条语句占一行。
  • 用一对花括号{ }括起来的部分,通常表示程序的某一层次结构。{ }一般与该结构语句的第一个 字母对齐,并单独占一行。
  • 低一层次的语句或说明可比高一层次的语句或说明缩进若干个空格后书写。以便层次更加清晰, 增加程序的可读性。
    编程时应力求遵循上述规则,以养成良好的编程风格。

第五节 C 程序开发环境

一、C 程序的运行步骤
C 程序在计算机上的运行步骤如图 2-1 所示。
在这里插入图片描述
1)编辑:进入 C 语言编译系统,建立源程序文件,扩展名为“c”或“cpp”,编辑并修改、 保存源程序。
2)编译:计算机不能识别和执行高级语言编写的源程序,必须经过编译程序对源程序进行编译。
3)链接:经过编译生成的目标程序还无法在计算机上直接运行,因为源程序中输入、输出以及 常用的函数运算是直接调用函数库中的库函数,因此必须把库函数的处理过程链接到经编译生成的 目标程序中,生成可执行文件,其扩展名为“exe”。
4)运行:一个 C 源程序经过编译、链接后生成可执行文件,可在编译系统或操作系统中运行。
C 语言的编译系统很多,常用的是集成开发环境,即源程序的编辑、编译、链接和运行都在同 一环境下完成,便于操作。
Microsoft VisualC++6.0 不仅支持 C+十语言的编程,也兼容 C 语言的编程。本书的上机环境 是 Microsoft VisualC++6.0。

二、C 程序的运行
在 Microsoft Visual C++ 6.0 环境下运行 C 程序的主要过程如下:
1. 启动 Microsoft VisualC++6.0
双击 Microsoft Visual C++ 6.0 的图标,启动 Microsoft Visual C++ 6.0。
2. 新建项目
1)在主窗口的主菜单栏中选择“File”菜单项,在弹出的子菜单中选择“New”命令。
2)弹出的“New”对话框中,切换到“Projects”选项卡,在左侧列表框中选择“Win32 Console Application”项,然后在右侧的“Project name”文本框中输入新建工程的名称,如 HelloWorld, 在“Location”文本框中输入工程的存储路径。
3)如图 2-5 所示,在弹出的“Win32 Console Application”对话框中选中“An empty project” 单选按钮,单击“Finish”按钮。
4)在弹出的“New Project Information”对话框中单击“OK”按钮,项目工作区中显示新 建的空工程“HelloWorld”。
3. 新建源程序
1)在主窗口的主菜单栏中选择“File”菜单项,在弹出的子菜单中选择“New”命令。
2)在弹出的“New”对话框中,切换到“Files”选项卡,在左侧的列表框中选择“C++ Source File”项,表示要新建一个 C/C++源程序文件,勾选右侧的“Add to project”复选框,并选择刚 刚创建的空工程“HelloWorld”,在“File”文本框中输入新建源程序文件的名称,如“hello.c”。
3)单击“OK”按钮,可以看到程序编辑窗格即可编辑程序,如图 2-8 所示。
4. 编译源程序
在主菜单栏中选择“Build”菜单项,在弹出的子菜单中选择“Compile hello.c”命令,或者 单击工具栏中的“Compile”按钮在编译过程中,主窗口下方会弹出调试信息窗格,此窗格会输出 编译的信息。如果无错误,输出“0 error(s), 0 warning(s)”;如果有错误,则输出相关的错误信 息。
5.链接源程序
编译成功之后进行链接操作。在主菜单栏中选择“Build”菜单项,在弹出的子菜单中选择“Build HelloWorldexe”命令,或者单击工具栏中的“Build”按钮。
6. 运行程序
链接成功之后即可运行程序。在主菜单栏中选择“Build”菜单项,在弹出的子菜单中选择 “Execute HelloWorld.exe”命令,或者单击工具栏中的“Execute Program”按钮。

在这里插入图片描述

下图少了个分号,请忽略代码。在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、C 程序的调试
在 Microsoft Visual C++ 6.0 环境下调试 C 程序的主要过程如下:
1. 设置断点
调试 C 程序时,首先需要判断程序可能从哪条语句开始出现错误,将光标移动到该语句所在行, 然后单击“InsertRemove Breakpoint”按钮或按〈F9〉键或者点击Edit菜单下边的InsertRemove Breakpoint”,此时若在语句行左侧出现一个红点, 则表示断点设置成功。
在这里插入图片描述

通过设置断点,检查运行到断点处某些表达式的值,以确定错误的大致位置;通过核对某些表 达式的值,以确定错误的原因。
2. 调试界面
断点设置成功后,单击“Go”或者按“F5”按钮,程序开始运行。运行到断点所在语句时,程序将自动暂停 执行,进入调试状态,代码行左侧的黄色小箭头指示程序当前的执行位置。界面下方出现两个窗格, 左侧窗格为自动变量框,可以看到各变量的当前值,右侧窗格为观察框,在“Name”列输入变量 名称后,“Value”列将显示该变量的当前值。在观察框中可以输入多个变量名以方便检测程序。

到断点处停止运行
在这里插入图片描述
在这里插入图片描述

我们也可以在 VC“Build”(组建)菜单下的“Start Debug”(开始调试)中点击 Go(F5)命令进入调试状态,Build 菜单自动变成 Debug 菜单,提供以下专用的调试命令:

Go(F5) 从当前语句开始运行程序,直到程序结束或断点处。 
Step Into(F11) 单步执行下条语句,并跟踪遇到的函数。 
Step Over(F10) 单步执行(跳过所调用的函数) 
Run to Cursor(Ctrl+F10) 运行程序到光标所在的代码行。 
Step out(Shift+F11) 执行函数调用外的语句,并终止在函数调用语句处。 
Stop Debugging(Shift+F5) 停止调试,返回正常的编辑状态

在这里插入图片描述

喜欢网络安全与编程的兄弟可以关注下我的公众号
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值