VisualC系列教程第1章C/C语言概述.ppt

上传人:max****ui 文档编号:11498276 上传时间:2020-04-25 格式:PPT 页数:38 大小:201KB
返回 下载 相关 举报
VisualC系列教程第1章C/C语言概述.ppt_第1页
第1页 / 共38页
VisualC系列教程第1章C/C语言概述.ppt_第2页
第2页 / 共38页
VisualC系列教程第1章C/C语言概述.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
第1章C/C+语言概述,1.1从C到C+的程序结构1.2程序书写规范1.3数据类型1.4运算符和表达式1.5基本语句1.6函数1.7指针和引用1.8作用域和存储类型1.9预处理,1.1从C到C+的程序结构,C+程序是由预处理命令、语句、函数、变量(对象)、输入与输出以及注释等几个基本部分组成的。代码中的main表示主函数,每一个C+程序都必须包含一个且只能包含一个main函数。main函数体是用一对花括号“”和“”括起来的,函数体中包括若干条语句,每一条语句都以分号“;”作为结束的标志。C+用标准输入输出的头文件iostream.h替代了C语言的stdio.h,用cin、cout和操作运算符、name与manyi.name是等价的,等等。,1.7指针和引用,1.7.5函数的指针传递如果函数的某个参数是指针,对这函数的调用就是按地址传递的,由于函数形参指针和实参指针指向同一个地址,因此形参内容的改变必将影响实参。1.7.6引用引用是给一个已定义的变量起一个别名,系统不为引用类型变量分配内存空间,只是使引用类型变量与其相关联的变量使用同一个内存空间。引用类型变量定义格式:/错误:不能建立数组的引用(4)可以引用一个结构体。引用本身不是一种数据类型,所以没有引用的引用,也没有引用的指针。,1.7指针和引用,1.7.7函数的引用传递指针作为函数的参数时,形参改变后相应的实参也会改变。但如果以引用作为参数,则既可以实现指针所带来的功能,而且更加简便自然。一个函数能使用引用传递的方式是在函数定义时将形参前加上引用运算符“时,实际上是将实参a、b的地址存放到系统为形参分配的内存空间中,形参的任何操作都会改变相应的实参的数值。引用除了可作为函数的参数外,还可作为函数的返回值。,1.8作用域和存储类型,1.8.1作用域块作用域块就是块语句。在块中声明的标识符,其作用域从声明处开始,一直到结束块的花括号为止。具有块作用域的标识符称作局部标识符,块作用域也称作局部作用域。说明:(1)当标识符的作用域完全相同时,不允许出现相同的标识符名。而当标识符具有不同的作用域时,允许标识符同名。(2)VisualC+中,在for语句中声明的标识符,其作用域是包含for语句的那个内层块,而不是仅仅作用于for语句,这与标准C+不一样。函数原型作用域在声明函数原型所指定的参数标识符的作用范围。这个作用范围是在函数原型声明中的左、右括号之间。在函数原型中声明的标识符可以与函数定义中说明的标识符名称不同。所声明的标识符与该函数的定义及调用无关,可以在函数原型声明中只作参数的类型声明,而省略参数名。,1.8作用域和存储类型,函数作用域只有goto语句中的标号标识符具有函数作用域。具有函数作用域的标识符在声明它的函数内随处可见,但在此函数之外不可见。由于goto语句的滥用导致程序流程无规则、可读性差。因此现代程序设计方法不主张使用goto语句。文件作用域在函数外定义的标识符或用extern说明的标识符称为全局标识符。全局标识符的作用域称为文件作用域,它从声明之处开始,直到文件结束一直是可见的。在同一个作用域中,不能对同名的标识符作多种不同的声明。而当块作用域内的标识符与全局标识符同名时,局部标识符优先,且在块作用域内使用作用域运算符“:”来引用与局部标识符同名的全局标识符。,1.8作用域和存储类型,1.8.2变量的存储类型规定了变量的生存期。无论是全局变量还是局部变量,编译系统往往根据其存储方式定义、分配和释放相应的内存空间。全局变量是指其作用域是文件作用域的变量,局部变量是指其作用域小于文件作用域的变量。自动类型(auto)一般用自动存储类型声明的变量都是限制在某个程序范围内使用的。从系统角度来说,自动存储类型变量是采用堆栈方式分配内存空间。当程序执行到超出该变量的作用域时,就释放它所占用的内存空间,其值也随之消失了。声明一个自动存储类型的变量是在变量类型前面加上关键字auto。若自动存储类型的变量是在函数内或语句块中声明的,则可省略关键字auto。静态类型(static)一种局部变量。静态类型变量在内存中是以固定地址存放的,不是以堆栈方式存放的。只要程序在继续执行,它的值就有效,不会随它所在的函数或语句块的结束而消失。声明一个静态类型的变量是在变量类型前面加上关键字static。需要说明的是:(1)静态类型的变量均有确定的初值,当声明变量时没有指定其初值,则编译器将其初值置为0。(2)程序中声明的全局变量是静态存储类型,若在全局变量前加一个static,使该变量只在这个源程序文件内使用,称之为全局静态变量或静态全局变量。若一个程序由一个文件组成,在声明全局变量时,有无static并没有区别,但若多个文件组成一个程序时,加与不加static,其作用完全不同。静态全局变量对组成该程序的其他源文件是无效的,它能很好地解决在程序多文件组织中全局变量的重名问题。(3)静态函数是在某个函数声明前加上static,它的目的是使该函数只在声明的源文件中使用,对于其他源文件则无效。,1.8作用域和存储类型,寄存器类型(register)使用关键字register声明寄存器类型的变量的目的是将所声明的变量放入寄存器内,从而加快程序的运行速度。但有时在使用这种声明时,若系统寄存器已经被其他数据占据时,寄存器类型的变量就会被系统自动默认为auto变量。外部类型(extern)使用extern声明的变量称为外部变量,一般指定义在本程序外部的变量。某个变量被声明成外部变量时,不必再次为它分配内存就可以在本程序中引用这个变量。只有在两种情况下要使用外部变量:在同一个源文件中,若定义的变量使用在前,声明在后,这时在使用前要声明为外部变量。当由多个文件组成一个完整的程序时,在一个源程序文件中完全定义的变量要被其他若干个源文件引用时,引用的文件中要使用extern声明外部变量。外部变量对不同源文件中或函数之间的数据传递特别有用。这种能被许多函数共享的外部变量,其数据值的任何一次改变,都将影响到所有引用此变量的函数的执行结果,其危险性是显而易见的。,1.9预处理,宏定义命令用#define可以定义一个符号常量,如:#definePI3.141593#define就是宏定义命令,它的作用是将3.141593用PI代替;PI称为宏名。需要注意的是:(1)#define、PI和3.141593之间一定要有空格,且一般将宏名定义成大写,以便与普通标识符相区别。(2)宏被定义后,使用下列命令后可重新定义:#undef宏名(3)一个定义过的宏名可以用来定义其它新的宏。(4)宏还可以带参数。文件包含命令所谓“文件包含”是指将另一个源文件的内容合并到源程序中。C/C+语言提供了#include命令用来实现文件包含的操作,它有下列两种格式:#include#include“文件名”文件名一般是以.h为扩展名,因而称它为“头文件”,如前面的程序中iostream.h是头文件的文件名。文件包含的两种格式中,第一种格式是将文件名用尖括号“”括起来的,用来包含那些由系统提供的并放在指定子目录中的头文件。第二种格式是将文件名用双引号括起来的,用来包含那些由用户定义的放在当前目录或其他目录下的头文件或其他源文件。,1.9预处理,条件编译命令有时希望根据一定的条件去编译源文件的不同部分,就是“条件编译”。条件编译使得同一源程序在不同的编译条件下得到不同的目标代码。有几种常用的形式:(1)第一种形式#ifdef#else#endif是由若干条预处理命令或语句组成的。含义是:如果标识符已被#define命令定义过,则编译,否则编译。(2)第二种形式#ifndef#else#endif与前一种形式的区别仅在于,如果标识符没有被#define命令定义过,则编译,否则就编译。(3)第三种形式#if#elif.#else#endif含义是,如果为“真”就编译,否则如果为“真”就编译,.,如果各表达式都不为“真”就编译。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!