《C语言程序设计》全套教学课件_第1页
《C语言程序设计》全套教学课件_第2页
《C语言程序设计》全套教学课件_第3页
《C语言程序设计》全套教学课件_第4页
《C语言程序设计》全套教学课件_第5页
已阅读5页,还剩225页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用型系列教材C语言程序设计第一章初识C语言全套可编辑PPT课件

全套可编辑PPT课件

C语言的发展历史01C语言C语言的原型为ALGOL

60语言(也称为A语言)。目前,流行的C语言编译系统大多是以ANSI

C为基础进行开发的,不同版本的C编译系统所实现的语言功能和语法规则又略有差别。C语言的发展历史01C语言的特点02C语言具有以下几个特点:C语言简洁、紧凑,使用方便、灵活,一共有32个关键字。运算符丰富,共有34种运算符。数据结构类型丰富。具有结构化的控制语句,9种句可以实现结构化的程序设计。C语言的特点01C语言的特点C语言具有以下几个特点:语法限制不太严格,程序设计自由度大。C语言允许直接访问物理地址,能够进行位(bit)操作,实现汇编语言的大部分功能,可以直接对硬件进行操作,因此有人把C语言称为中级语言。生成目标代码质量高,程序执行效率高,可移植性好。01第一个C程序03说明:函数是程序的基本组成单位,一个程序可以由一个或多个函数组成。一个程序有且仅有一个main()函数(主函数)。无论main()函数在整个程序中的位置如何,一个C程序总是从main()函数开始执行的。每条C语句均以分号结束。{}是函数开始和结束的标志,不可省略。第一个C程序01第一个C程序说明:C语言本身没有输入/输出语句。用户可以对源程序加上必要的注释,以增加程序的可读性。为了避免遗漏必须配对使用的符号,如注释符号、函数体的起止标识符(花括号、圆括号等),在输入时,可以连续榆入函数体的起止标识符,在其中插入相应的内容来完成编辑。一个C语言的源程序可以由一个或多个源文件组成。01C程序开发流程04C程序开发流程大体可以分为编辑、编译、连接、运行4个步骤。C程序开发流程01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第二章C语言基础标识符0101C语言的字符集字母数字共有26个小写字母a~z。共有26个大写字母A~Z。共有10个数字,即0、1、2、3、4、5、6、7、8、9。01C语言的字符集空白符标点和特殊字符空格符、制表符、换行符等统称为空白符。标点:逗号(,)、分号(;)、方括号([])、花括号({})等。特殊字符:加号(+)、减号(-)、百分号(%)、乘号(*)等。02关键字类型说明符语句定义符类型说明符用于定义、说明变量、函数或其他数据结构的类型。语句定义符用于表示一个语句的功能。预处理命令字预处理命令字用于表示一个预处理命令,如include。03标识符

命名规则:标识符只能由字(A~Z,a~z)、数字(0~9)和下画线(_)组成,并且其第一个字符必须是字母或下画线。在标识符中,要注意区分字母的大小写。标识符虽然可以由用户随意定义,但标识符是用于标识某个量的符号。03标识符

命名规则:用户定义标识符时,尽量不要使用下画线开头。因为编译器预留的名字大多是以下画线开头的,容易造成命名冲突。不能使用关键字作为用户自定义的标识符。标识符中尽量避免使用容易混淆的字符。数据类型02基本数据类型构造类型基本数据类型最主要的特点是其值不可以再分解为其他类型。构造类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或一个构造类型。数据类型01数据类型指针类型空类型指针是一种特殊的,同时又是具有重要作用的数据类型,其值用来表示某个变量在内存储器中的地址。在调用函数值时,通常向调用者返回一个函数值,这个返回的函数值具有一定的数据类型,应该在函数定义及函数说明中给以说明。01常量和变量03整型常量实型常量十进制形式:与数学上的整数表示相同。八进制形式:在数码前添加字0。十六进制形式:在数码前添加0X。进制形式:由数和小数点组成(必须有小数点)。指数形式:由“十进制小数”+“e(E)”+“十进制整数”3部分组成。规范化的指数表形式。常量01字符常量字符串常量用一对单引号括起来的单个字符称为字符常量。转义字符。字符常量由单引号括起来,字符串常量由双引号括起来。字符常量只能是单个字符,字符串常量则可以包含一个或多个字符。字符常量占一个字节的内存空间。常量01符号常量在C语言中,用户可以使用一个标识符来表示一个常量,称为符号常量。常量0102变量

要素:变量名:每个变量都必须有一个名字,用以相互区分。变量类型:不同类型变量在内存中所占的存储单元大小不同。变量值:变量代表计算机内存中的某一存储单元,该存储单元中存放的数据就是变量的值。在程序中,用户可以通过变量名来引用变量值。02变量

优势:凡未被事先定义的不作为变量名,这样能保证程序中变量名使用正确。每一个变量被指定一个确定数据类型,在编译时就能为其分配相应的存储单元。指定每一变量属于一个数据类型,便于在编译时,以此检查该变量所进行的运算是否合法。03整型变量整型变量的分类整型变量的存储修饰符有:signed(有符号);unsigned(无符号);long(长型);short(短型)。有符号整数是以补码表示的。正数的补码和原码相同。负数的补码将该数的绝对值的二进制形式按位取反再加1。整型变量的定义整理变量定义的语法格式如下:类型说明符交量名标识符,变量名标识符,...;04实型变量

实型变量的分类实型变量分为:单精度型(float)、双精度型(double)和长双精度型(lngdouble)3类。单精度型占4字节(32位)内存空间,其数值范围为10-37~1038,最多提供7位有效数字。双精度型占8字节(64位)内存空间,其数值范围为10-307~10308,最多提供16位有效数字。04实型变量

实型变量的存储实型变量一般占4字节(32位)内存空间,按指数形式存储。小数部分占的位(bit)数越多,数据的有效数字越多,精度越高。指数部分占的位数越多,能表示的数值范围越大。在不同操作系统中,实型变量两部分所占位数也不同,大家了解其存储方式即可。实型变量的定义实型变量的舍入误差实型变量定义的语法格式和书写规则与整型变量相同。由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。实型变量04字符型变量的定义字符型变量的存储字符型变量用来存储字符常量,即单个字符。字符型变量的类型说明符是char。每个字符型变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元中的。字符型变量0506变量初始化

变量初始化在程序中常常需要对变量赋初值,以便用户使用变量。在进行变量定义的同时给变量赋以初值的方法称为初始化。在变量定义中赋初值的语法格式如下:类型说明符

变量1=值1,变量2-值2,...;07各类数值型数据之间的混合运算隐式类型转换隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需要人为干预。因此,在表达式中如果有不同类型的数据参与同一运算,编译器就会在编译时自动按照规定的规则将其转换为相同的数据类型。C言规定的转换规则是由低级向高级转换的。07各类数值型数据之间的混合运算显式类型转换显式类型转换又被称为强制类型转换,强制类型转换是通过类型转换运算来实现的。语法格式如下:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。运算符和表达式0401运算符简介C语言的运算符可分为以下几类:(1)算术运算符(2)关系运算符(3)辑运算符(4)位操作运算符(5)赋值运算符(6)条件运算符(7)逗号运算符(8)指针运算符(9)求字节数运算符(10)特殊运算符02算术运算符基本的算术运算符加法运算符“+”减法运算符“_”乘法运算符“*”除法运算符“/”求余运算符(模运算符)“%”02算术运算符算术表达式和运算符的优先级与结合性符算术表达式:使用算术运算符和括号将运算对象(操作数)连接起来的、符合C语言语法规则的式子。运算符的优先级:在C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。运算符的结合性:在C语言中,各运算符的结合性分为两种,即左结合性(自左向右)和右结合性(自右向左)。02算术运算符功能自增运算使单个变量的值增1,自减运算使单个变量的值减1。自增、自减运算符都有以下两种用法。前置运算——运算符放在变量之前:++变量、--变量。后置运算——运算符放在变量之后:变量++、变量--。03赋值运算符和赋值表达式赋值运算符赋值中的类型转换赋值运算符“=”的作用是将一个表达式的值赋给一个变量。赋值运算符的语法格式如下:变量=表达式当赋值运算符两边的运算对象类型不同时,将要发生类型转换,转换的规则是把赋值运算符右侧表达式的类型转换为左侧变量的类型。04逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符就是我们常用的逗号“,”,当作为操作符时,它可以把多个表达式连接起来,如“a+5,b-3”就是一个逗号表达式。逗号表达式的求值过程是从左到右,逐个计算表达式的值,最后整个表达式的值取最右侧表达式的值。逗号运算符也被称为顺序求值运算符。常见错误05在书写标识符时,忽略了大小写字母的区别忽略了变量的类型,进行了不合法的运算将字符常量与字符串常量混淆忘记加分号忘记定义变量变量没有赋值就引用

常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第三章数据的输入/输出C语句的分类01控制语句,完成一定的控制功能。函数调用语句。由一次函数调用加一个分号构成一条语句。表达式语句。由一个表达式构成一条语句,最典型的是,由赋值表达式构成一条赋值语句。空语句。可以用{}把一些语句括起来构成复合语句,又称为分程序。C语句的分类01程序的三种基本结构021.顺序结构程序的三种基本结构01程序的三种基本结构2.选择结构01程序的三种基本结构3.循环结构01数据输入/输出的概念03数据输入/输出的概念所谓输入/输出是以计算机主机为主体而言的。从计算机向外部输出设备(如显示器、打印机等)输出数据称为“输出”,从外部向输入设备(如键盘、磁盘、扫描仪等)输入数称为“输入”。数据输入/输出的概念01字符输入/输出函数0401字符输出函数putchar()字符输出函数putchar()putchar()函数的作用是向终端输出一个字符。例如,putchar(c),它将变量c的值以字符的形式输出。c可以是字符型变量或整型变量。02字符输入函数getchar()字符输入函数getchar()getchar()函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar()函数没有参数,语法格式如下:getchar();格式输入/输出函数0501格式输出函数printf()printf()函数的语法格式格式字符printf(“格式控制字符串”,输出表列);对不同类型的数据要采用不同的格式字符,常用的有以下几种格式字符:d格式字符;o格式字符;x格式字符;u格式字符;c格式字符;s格式字符;f格式字符;e格式字符;g格式字符。02格式输入函数scanf()scanf函数的语法格式格式控制字符串:格式控制字符中包含格式说明符和普通字符。scanf()函数中的格式说明符与printf()函数中的格式说明符功能相似,当普通字符在输入有效数据时,必须原样一起输入。地址表列:由若干个地址组成的列表,可以是变量的首地址,也可以是字符数组名或指针变量。变量地址的表示方法为“&变量名”,其中“&”是地址运算符。格式字符02格式输入函数scanf()格式字符02格式输入函数scanf()数据输入操作如果相邻两个格式说明符之间没有其他字符分隔,则相应的两个输入数据之间,至少用一个空白字符分隔,再输入下一个数据。格式字符串中出现的普通字符,务必原样输入。当使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符输入。可以指定输入数据所占列数,系统自动截取所需数据。02格式输入函数scanf()说明格式控制字符串后面应该是变量地址,而不应该是变量名。当输入数据时,不能规定精度。当使用scanf()函数输入数据时,遇到以下几种情况系统认为该数据输入结束。遇到Space键、Enter键或Tab键;遇到输入域宽度结束;遇到非法输入。02格式输入函数scanf()程序举例06程序举例程序举例01常见错误07输入变量时忘记添加地址运算符“&”输入数据的方式与要求不符输入字符的格式与要求不一致输入/输出的数据类型与所用格式说明符不一致输入数据时企图规定精度在scanf()函数中加入“\n”多加分号常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第四章选择结构关系运算01关系运算符及优先级01关系运算符及优先级02关系表达式关系表达式所谓关系表达式是指用关系运算符将两个表达式连接起来,进行关系运算的式子。关系表达式的值是一个逻辑值,即非真即假的值。逻辑运算02C语言了提供了以下3种逻辑运算符。逻辑运算符及优先级01逻辑表达式逻辑表达式02逻辑表达式逻辑表达式02if语句03if语句的三种基本形式单分支选择if语句双分支选择if...else语句多分支选择if...else...if语句01if语句的三种基本形式if语句的嵌套if、else后面的语句可以是各种形式,如果还是一个if语句,这就是if语句的嵌套。if语句有3种嵌套形式。02if语句的嵌套条件运算符(?:)是C语言中唯一的一个三目运算符,它连接3个运算量,语法格式如下:表达式1?表达式2:表达式3条件运算符03switch语句04switch语句的语法格式如下:switch(表达式){case

常量表达式1

:语句1

case常量表达式2

:语句2...

case

常量表达式n

:语句n

default:语句n+1}switch语句01程序举例05程序举例程序举例01常见错误06忘记必要的逻辑运算符误把赋值作为等于运算符该用复合语句时忘记编写花括号在不该添加分号的地方添加了分号else之前的语句丢失分号在switch语句中忘掉了必要的break常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第五章循环结构while语句01while语句语法格式while语句执行过程while(表达式)循环体语句;①求解表达式。如果其值为非0值,则转到②;否则转到③。②执行循环体语句,然后转到①。③执行while语句后的下一条语句。while语句01do...while语句02do...while语句语法格式do...while语句执行过程do(循环体语句)while(表达式)①执行循环体语句。②求解表达式。如果其值为非0值,则转到①;否则转到③。③执行do...while语句后的下一条语句。do...while语句01for语句03for语句语法格式for语句执行过程for(表达式1;表达式2;表达式3)循环体语句;①求解表达式1。②求解表达式2,如果其值为非0值,则执行③;否则,转到④。③执行循环体语,并求解表达式3,再转到②。④执行for语句的下一条语句。for语句01循环嵌套04循环嵌套一个循环内又包含另一个完整的循环结构称为循环嵌套。内嵌的循环中还可以再嵌套循环,这就是多层循环。在各种编程语言中关于循环嵌套的概念是一样的。循环嵌套01辅助控制语句05break语句执行过程01break语句continue语句执行过程02continue语句goto语句06goto语句为无条件转向语句,其语法格式如下:goto

语句标号;语句功能:使控制流程转向标号所在的语句行执行。goto语句01程序举例07程序举例程序举例01常见错误08误把“=”作为等号使用,这与条件语句中的情况一样忘记使用花括号括起循环体中的多条语句,这与条件语句类似在不该添加分号的地方添加了分号花括号不匹配死循环常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第六章数组一维数组0101一维数组的定义

语法格式:类型说明符数组名

[常量表达式]02一维数组元素的引用

语法格式:数组同变量一样,必须先定义后引用,引用数组中的任意一个元素的语法格式如下:

数组名[下标]其中,“下标”可以是整型常量或整型表达式。03一维数组的初始化

语法格式:数组元素和变量一样,可以在定义的同时赋初值,称为数组的初始化。一维数组初始化的语法格式如下:

类型说明符

数组名[N]={初值1,初值2,...};对于数组中的若于数组元素来说,可以在{}中给出各数组元素的初值,各初值之间使用逗号分隔。二维数组02二维数组定义的语法格式如下:类型说明符

数组名

[常量表达式1][常量表达式2];其中,“常量表达式1”表示第一维数组下标的长度,“常量表达式2”表示第二维数组下标的长度。二维数组的定义01二维数组元素引用的语法格式如下:数组名

[下标表达式][下标表达式]二维数组元素的引用02二维数组的初始化有以下几种方法:分行给二维数组中的元素赋初值,即按行赋初值。将所有初值写在一个花括号内,按数组元素在内存中的存储顺序依次对各元素赋初值。只给部分元素赋初值。当全部元素赋初值时可以不指定第一维数组的长度。此时第一维数组的长度由第二维数组的长度(列数)自动确定。二维数组的初始化03字符数组03一维字符数组定义的语法格式如下:二维字符数组定义的语法格式如下:char

数组名

[常量表达式];char

数组名

[常量表达式1]

[常量表达式2];字符数组的定义01字符数组元素的引用同前文介绍的数值数组元素的引用基本相同,每次只能引用一个字符数组元素,只得到一个字符。其引用的语法格式如下:数组名[下标1][下标2][下标3]...]]

//[...]为可选项,表示其内容可有可无字符数组元素的引用0203字符数组的初始化字符数组的初始化花括号中提供的初值个数(即字符个数)等于数组长度。如果花括号中提供的初值个数大于数组长度,则出现语法错误。如果初值个数小于数组长度,则将这些初值赋给字符数组前面的元素,其他元素自动为空字符(‘\0’)。如果花括号中提供的初值个数等于数组长度,则在定义字符数组时可以省略数组长度。在C语言中,虽然有字符串常量,却没有专门的字符串变量,所有字符串的输入、输出、存储和处理等操作都要使用字符数组来实现。为了测定字符串的实际长度,C语言规定了一个字符串结束标志(’\0’)。遇到’\0’表示字符串结束,由它前面的字符组成字符串。字符串及其结束标芯04字符数组的输入/输出有以下两种方法:逐个字符输入/输出:使用“%c”格式输入/输出一个字符。将整个字符一次性输入/输出:使用“%s”格式输入/输出一个字符串。05字符数组的输入/输出字符串输出函数字符串输入函数puts()函数的作用是向终端输出一个字符串。其语法格式如下:puts(字符数组)gets()函数的作用是从终端输入一个字符串到字符数组,并得到一个函数值,该函数值是字符数组的首地址(即起始地址)。其语法格式如下:gets(字符数组)字符串处理函数06字符串连接函数字符串复制函数strcat()函数的作用是连接两个字符数组中的字符串。把字符串2连接到字符串1的后面,结果放在“字符数组1”中,该函数被调用后得到一个函数值,该函数值是字符数组的首地址。其语法格式如下:strcat(字符数组1,字符数组2)strcpy()函数的作用是复制字符串,把“字符数组2或字符符2”复制到“字符数组1”中。复制时连同’\0’一起复制到“字符数组1”中。其语法格式如下:strcpy(字符数组1,字特数组2或字符串2)字符串处理函数06字符串比较函数字符串长度函数strcmp()函数的作用是比较两个字符串的大小。其语法格式如下:strcmp(字符串1,字符串2)strlen()函数用于测试字符串的长度,其函数值为字符串的实际长度,不包括字符串的结束标志’\0’。其语法格式如下:strlen(字符数组名或字符串常量)字符串处理函数06字符串小写函数字符串大写函数strlwr()函数用于将字符串的大写字母转换成小写字母。其语法格式如下;strlwr(字符串)strupr()函数用于将字符串的小写字母转换成大写字母。其语法格式如下:strupr(字符串)字符串处理函数06程序举例04程序举例程序举例01常见错误05数组下标越界数组整体赋值接收字符串时使用了取地址运算符向一个字符数组赋字符串忘记在构造字符串末尾添加结束标志’\0’常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第七章函数函数概述01在C语言中可以从不同的角度对函数分类。从函数定义的角度来看,可以分为库函数和用户自定义函数两种。C语言的函数兼有其他语言中的函数和过程两种功能。从主调函数和被调函数之间数据传送的角度来看,又可以分为无参函数和有参函数两种。函数概述01在C语言中可以从不同的角度对函数分类。从函数的作用范围来看,又可以分为外部函数和内部函数两种。C语言提供了极为丰富的库函数,这些库函数又可以从功能角度进行分类。函数概述01函数的定义0201无参函数的定义

无参函数的定义无参函数定义的语法格式如下:类型标识符

函数名()//函数首部{声明部分

//函数体

语句部分}02有参函数的定义

有参函数的定义有参函数定义的语法格式如下:类型标识符

函数名(形式参数表列)//函数首部{声明部分

//函数体

语句部分}函数的参数和函数的值03函数的形参和实参具有以下4个特点:形参变量只有在函数调用时才会分配内存单元,在函数调用结束时,即刻释放所分配的内存单元。实参可以是常量、变量、表达式、函数调用等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。形参和实参01函数的形参和实参具有以下4个特点:实参和形参在数量上、类型上、顺序上要严格一致,否则会发生类型不匹配的错误。函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。形参和实参01函数的值只能通过return语返回主调函数。函数返回值的类型和函数定义中函数的类型应该保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。在函数定义时如果省略函数类型,则函数返回值为整型。为了使程序具有良好的可读性并减少出错,即使函数类型为整型,也不要使用系统的缺省处理。函数的返回值02函数的返回值如果被调用函数中没有cturn语,并不带回一个确定的、用户所希望得到的函数值,但实际上,函数并不是不带回值,而只是不带回有用的值,带回的是一个不确定的值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。02函数的调用0401函数调用的语法格式

函数调用的语法格式函数名([实参表列])02函数调用的方式

函数调用的方式函数语句函数表达式函数实参03函数的声明

函数的声明要完成函数调用,被调用函数必须满足以下条件。必须是已存在的函数,也就是函数已有完整的定义。在函数调用之前必须有相应的函数声明。如果是系统定义的库函数,则需要将包含函数原型声明的头文件包含进来。函数的嵌套调用05函数的嵌套调用函数的嵌套调用01函数的递归调用06函数的递归调用是指一个函数在它的函数体内,直接或间接地调用它自身。C语言允许函数的递归调用。在递归调用中,调用函数又是被调用函数,执行递归函数将反复调用其自身。每调用一次就进入新的一层。函数的递归调用01数组作为函数的参数07数组元素与普通变量并无区别。因此它作为函数实参使用与普通变量使用是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,可以实现单向的值传送。数组元素作为函数实参01使用数组名作为函数参数与使用数组元素作为实参的不同点:当使用数组元素作为实参时是按普通变量对待的。当普通变量或数组元素作为函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。数组名作为函数的参数02局部变量和全局变量0801局部变量

局部变量在一个函数的内部定义的变量就是局部变量(又称为内部变量),它只在本函数范围内有效。也就是说,只能在本函数内使用,在本函数的外面是不能使用的,因此称它为局部变量。02全局变量

全局变量一个源程序文件可以有若干个函数,在函数内定义的变量是局部变量,而在一个源程序文件中所有函数之外定义的变量称为外部变量,外部变量是全局变量(也称为全程变量)。变量的存储类型0901静态存储方式与动态存储方式

用户存储空间程序区静态存储区动态存储区01静态存储方式与动态存储方式

动态存储区存放:函数形式参数自动变量(未添加static声明的局部变量)函数调用时的现场保护和返回地址02auto变量

auto变量在函数中定义的内部变量,如果不专门声明为static存储类别,则其存储类别默认都是自动变量(auto),数据存储在动态存储区中。03使用static声明局部变量有时希望函数中局部变量的值在函数调用结束后不消失而保留原值,即不释放占用的存储空间,这样在下一次该函数又被调用时,就是上一次函数调用结束时的值,在这种情况下就应该将该变量使用关键字static声明为静态局部变量。04register变量在一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的。为了提高效率,C语言允许将局部变量的值存放在CPU的寄存器中,这种变量被称为“寄存器变量”,使用关键字register进行声明。05使用extern声明外部变量外部变量(全局变量)是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的末尾。程序举例10程序举例程序举例01常见错误11在函数定义后面添了加分号非整型函数前面没有添加类型标识符形参说明写在函数体内调用还未定义的非整型函数时而未添加说明忽略参数的求值顺序常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第八章指针地址指针的基本概念01为了正确地访问内存单元,必须为每个内存单元编号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也被称为地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。地址指针的基本概念01变量的指针和指向变量的指针变量0201定义一个指针变量对指针变量的定义包括以下3个内容:指针类型说明,即定义变量为一个指针变量指针变量名变量值(指针)所指向的变的数类型02指针变量的引用两个有关的运算符:&:取地址运算符*:指针运算符(又称为间接访问运算符)03指针变量的几点说明

指针运算符取地址运算符“&”:取地址运算符“&”是单目运算符,其结合性为自右至左,其功能是取变量的地址。指针运算符“*”:指针运符“*”是单运算符,其结合性为自右至左,用来表示指针变量所指的变量。在“*”之后跟的变量必须是指针。03指针变量的几点说明

指针变量的运算赋值运算加减算术运算两个指针变量之间的运算数组的指针和指向数组的指针变量03一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。一个数组也是由各个数组元素(下标变量)组成的。每个数组元素按其类型不同占有几个连续的内存单元。一个数组的首地址也是指它所占有的几个内存单元的首地址。指向数组元素的指针01多维数组的地址指向二维数组的指针变量把二维数组a分解为一维数组a[0]、a[1]、a[2]后,设p为指向二维数组的指针变量。可定义为:int(*p)[4]指向多维数组的指针和指针变量02指针作为函数参数04两个形参变量在函数调用过程中发生了交换,而对应的实参并没有发生改变。这是因为实参和形参属于不同的存储单元,它们之间是单向值传递。指针作为函数参数01字符串的指针和指向字符串的指针变量05在C语言中,用户可以使用以下两种方法访问一个字符串:使用字符数组存放一个字符串使用字符串指针指向一个字符串字符串的表示形式01在使用时应该注意以下几个问题:字符指针变量本身是一个变量,用来存放字符的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存单元中并以"\0"作为字符的结束。字符数组是由若干个数组元素组成的,它可以用来存放整个字符串。使用字符串指针变量与字符数组的区别02在使用时应该注意以下几个问题:对字符串指针方式:char*ps="CLanguage";可以写为:char*ps;ps="CLanguage";而对字符数组方式:charst[]="CLanguage";不能写为:charst[20];st="CLanguage";只能对字符数组的各元素逐个赋值。使用字符串指针变量与字符数组的区别02在使用时应该注意以下几个问题:编译时为字符数组分配若干个存储单元,以存放各元素的值,而对字符指针变量只需分配一个存储单元。使用字符串指针变量与字符数组的区别02函数的指针和指向函数的指针变量06函数指针变量定义的语法格式如下:调用函数的语法格式如下:类型说明符(*指针变量名)();(*指针变量名)(实参表)函数的指针和指向函数的指针变量01返回指针值的函数07在C语言中,允许一个函数的返回值是一个指针(地址),这种返回指针值的函数称为指针型函数。返回指针值的函数01指针数组和指向指针变量的指针变量0801指针数组的概念指针数组说明的语法格式如下:类型说明符*数组名[数组长度]02指向指针的指针变量如果一个指针变量存放的是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。03main()主函数的参数main()主函数的函数头可写为:main(arge,argv)C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组。加上形参说明后,main()主函数的函数头应该写为:main(intarge,char*aregv[])有关指针的数据类型和指针运算的总结09指针数据类型及其说明有关指针的数据类型的总结0102有关指针运算的总结现在把全部指针运算列出如下:指针加(减)一个整数。指针变量赋值:将一个变量的地址赋给一个指针变量。指针变量可以有空值,即该指针变量不指向任何变量。两个指针变量可以相减:如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数。02有关指针运算的总结现在把全部指针运算列出如下:两个指针变量比较:如果两个指针变量指向同一个数组的元素,则两个指针变量可以进行比较。指向前面的元素的指针变量“小于”指向后面的元素的指针变量。03void指针类型ANSI新标准增加了一种void指针类型,即可以定义一个指针变量,但不指定它是指向哪一种类型数据。常见错误10对指针变量赋予非指针值使用指针之前没有让指针指向确定的存储区向字符数组赋字符串指针进行非法操作指针超越数组范围指向不同类型的指针一起操作常见错误01感谢观看应用型系列教材C语言程序设计应用型系列教材C语言程序设计第九章自定义数据类型结构体类型01结构体类型有以下5个特点:定义一个结构体类型,系统不会为其分配内存单元。结构体类型由多个成员组成,成员的数据类型可以是整型、实型、字符型、数组,也可以是另一个已经定义的结构体类型。结构体类型是根据用户的需要来组合的。定义一个结构的语法格式01结构体类型有以下5个特点:结构体类型系统没有预先定义,当需要使用结构体类型数据时,用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论