VISUALC++6.0自学摘要.doc_第1页
VISUALC++6.0自学摘要.doc_第2页
VISUALC++6.0自学摘要.doc_第3页
VISUALC++6.0自学摘要.doc_第4页
VISUALC++6.0自学摘要.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

Visual C+程序设计基础教程1.1.82. 运行多文件程序所谓多文件程序是指一个程序中至少包含两个文件,可以是两个以 上文件组成的一个程序, 其中有一个文件包含 main 函数。 例1.2 假设一个程序由以下三个文件组成, 给出其编译运行的步骤。 第一步 文件夹中建立好C+的源文件file1.cpp、file2.cpp和file3.cpp。第二步 创建一个新的工程文件。 方法是先选择主菜单中 的 File , 在它的下拉菜单中选择 New 命令, 屏幕上出 现 New 对话框, 选择 Project 选项卡, 在 Project Name 选框中输入所指定工程的名 称, 如“ Excise ”。 在 Location 选框中, 输入你要建立工程文件所需的源文件所在的路径, 如“ G : VC + 程序”(如图 1.10 所示)。 选中 Win32 Console Application 选项(一定要选中此选项, 表示建立控制台 应用 程序), 单击 OK命令按钮。第三步 在出现如图 1.13所示的 Excise工程界面中,选择 Project菜单中 Add To Project命令,再在出现的子菜单中选择 Files命令,出现打开文件对话框,把file1.cpp、file2.cpp和 file3.cpp依次添加到该工程中。1.2 C + 语言初步 VC + 中增加了一个布尔类型 BOOL , 其值为真(非 0 ) 或假( 0 )。 除了一般的常量外,C+中可以通过const定义常量,例如:const int n=10;其中:n是一个其值为整数10的常量,不是变量,它的值不能改变。135u / 无符号整数 8846UL / 无符号长整数 5L / 长整数 10lu / 无符号长整数 如以下浮点数是合法的: 3.14159F 0.12 1.0E -3 2.f 表 1.2 常用的特殊字符表 1.3 C + 的标准保留字 字符串可以写在多行上,不过在这种情况下必须用反斜线表示下一行字符是这一行字符的延续,例如:“e - mail : the exchange of text messages and computer filesover a communications network , such as a local area network or Internet , usually between computer or terminals. “表 1.4 常用 的 I/O 流类库操纵符 dec 数值数据采用十进制表示 hex 数值数据采用十六进制表示 oct 数值数据采用八进制表示 ws 提取空白符 endl 插入换行符, 并刷新流 ends 插入空字符 setprecision ( int ) 设置浮点数的小数位数(包括小数点) setw ( int ) 设置域宽 ( 2 ) 八进制和十六进制数的输出 cout十进制: decnendl;cout八进制:octnendl;cout十六进制:hexnendl;控制输出宽度:doublef=123.45 ; cout setw ( 10 ) 1234567890 endl ; cout setw ( 10 ) f endl ; cout setw ( 8 ) f endl ; cout setw ( 6 ) f endl ; cout setw ( 4 ) f endl ; 执行结果如下: 控制输出精度double d =123.456789 ; cout d endl ; cout setprecision ( 7 ) d endl ; cout setprecision ( 8 ) d endl ; cout setprecision ( 9 ) d endl ; 执行结果如下: 2.枚举类型枚举类型定义了一些整型符号常量的集合,其格式如下:enum 类型名标识符 1,标识符 2,标识符 n;其中:“标识符 1”至“标识符 n”表示一些整型符号常量,它们默认由系统赋予整数值:“标识符 1”的值为0,“标识符2”的值为1,“标识符 n”的值为 n-1,序列中每个标识符的值比前一个标识符大1。例如:enum BooleanNo,Yes; /No等于 0,Yes等于 1程序员也可以自己定义标识符的值,定义方式是直接在定义语句的标识符后赋值。那些没有显式赋值的枚举值还是比前一个标识符值大1,例如:enum ColorRed= -2,Yellow,Green=2,Blue;这样有:Red= -2,Yellow = -1,Green=2,Blue=3。枚举集合前加上的标识符可以代表这一枚举类型,用于变量定义。例如:enum DayMon,Tue,W ed,Thu,Fri,Sat,Sun;/定义一个枚举类型 Dayenum Daytoday,tomorrow;/定义 2个枚举变量则有:today=Mon;/合法,today值为 0tomorrow =today;/合法,tomorrow 值为 0intn=today;/合法,n值为 0tomorrow =3;/不合法,不能直接赋整数值【例 1.8】 分析以下程序的执行结果。#include void main()enum ColorRed,Yellow,Green,Blue;int n;for(n=Red;n=Blue;n+)cout n ;cout endl;上述程序中,说明一个枚举类型Color,它含有四个标识符。然后通过一个 for循语句输出它的各标识符默认的值。程序的执行结果如下: 0 1 2 33.结构体说明一个具有姓名和年龄的结构体类型 person 的语句如下: struct person char name10; int age ; 定义结构体类型变量:struct person john ; / 定义一个 person 类型变量 john 以上两个语句可以合在一起: struct person char name 10; int age ; john ; C+中对C的结构体有了扩展。结构体变量可以和类一样使用:结构体除了可以包含数据成员外,还可以包含成员函数;成员也可以加上public、private和protected的访问控制;结构体之间也可以继承。两者惟一不同之处是结构体中的成员默认是公有的,结构体的继承默认也是公有的,而类的继承默认是私有的,类的成员默认也是私有的。C+中结构体扩展部分的使用与类使用相似。5. 用 typedef 定义自己的变量类型 typedef 类型说明; typedef int width ; / 定义了 新类型 width , 它实际上是整型 typedef char string 10; / 定义了 新类型 string , 它是一个字符数组使用自 定义类型同使用系统预定义的类型一样: width n ; / 等价于 int n ; string name ; / 等价于 char name 10; 使用自定义类型有几点好处:一是可以更好地表达程序员的意思,如用width来表示将要定义的标识符是属于宽度一类的数据,用string表示程序员想要定义的是一个字符串,这比直接用系统预定义的类型清晰得多;二是简单方便,一些数据类型可以用一个简单的类型标识符来表示,不用每次都麻烦地写复杂的定义。 1.2.6指针#include void main () int n =12345 ; int p = &n ; cout &p = &p endl ; /&p 为 p 的地址值 cout p = p endl ; /p 本身是一个地址 cout *p = * p endl ; / p 为 p 所指向 的整数值结果为 &p =0x0065FDFDp =0x0065FDF4 * p =12345 1.4.1 函数的定义和调用 1. 函数的定义定义函数时,在函数名后跟参数(调用函数时的参数称为形式参数或形参)2. 函数的说明 3函数的调用调用函数时,在函数名后跟参数(调用函数时的参数称为实际参数或实参)定义一个函数就是为了以后的调用, 但如果函数调用在前而定义在后, 就会产生编译错误。为此,必须将函数定义在前或者在调用前进行“函数的说明”。函数说明消除了函数定义的位置影响。也就是说,不管函数是在何处定义的,只要在调用前进行函数的说明,就可保证函数调用的合法性。虽然函数不一定在程序的开始就说明,但为了提高程序的可读性和保证简洁的程序结构,最好将主函数main放在程序的开头, 而将函数说明放在主函数 main 之前。 说明一个函数的格式如下:函数类型 函数名(函数参数表); int max ( int x , int y ); int max ( int , int ); 1.4.2 函数的参数传递 简单地说,“引用”实际上是给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操作。,C+中的变量名对应着内存的存储位置,可以使用一个特定内存地址访问到它。引用则引入了变量的另一个名字(别名),它和这个变量具有同一内存地址。定义引用的方式是:类型 &引用名=已定义变量名例如: int val ; int &refval=val ; /refval 是 val 的引 用 这里引用refval和val的使用几乎完全一样。不同的是,引用必须进行初始化,而且一旦初始化后,就不能再成为其他变量的别名。可以为任意类型的变量创建引用。引用的使用基本上和一般变量一样,例如:int i ; int &ri=i ; ri=3 ; / 这时 i 的值也变为 3i=4 ; / 这时 ri 的值也变为 4 引用实际不是应用于上面这种场合,用法:引用常用来作函数形参和函数的返回值, 在运算符重载中也经常用到引用。这将在后面详细讲述。这里指出几点: 引用不是变量,它的值不能改变。引用不是指针,不能用于分配动态内存。引用的目的在于可以用较清晰的方法编写改变其参数值的函数,以及接受结构和对象作为参数的函数。引用的最大用途是当一个函数返回一个引用时,它可以成为左值。一个函数能使用引用传递的方式是在函数定义时将形参前加上引用运算符“&”。#include void swap ( int & , int & ); void main () int a =2 , b =10 ; swap ( a , b ); cout a = a ,b = b endl ; void swap ( int &x , int &y ) int temp =x ;x =y ; y =temp ; 上述程序中,定义了一个函数swap(),函数swap中的&x和&y就是形参的引用说明。在执行swap(a,b);时,它实际上是将实参a和b的地址存放到C+为形参分配的内存空间中。也就是说,形参的任何操作都会改变相应的实参的数据。所以函数swap调用后a和b的值交换了。程序的执行结果如下:a =10 , b =2 3. 函数的默认参数值 在 C + 中, 允许在函数的说明或定义时给一个或多个参数指定默认值。 以下是带默认参数值的函数说明: void initialize ( int printNo , int state =0 ); initialize ( 1 ); / 初始化 1 号打印机状态为 0initialize ( 1 , 0 ); / 效果同上 initialize ( 1 , 1 ); / 初始化 1 号打印机状态为 1 数可以将其全部或部分参数说明为带默认值, 但带默认值的参数只能放在参数表的最后。(如果前面参数有默认值,后面参数必须也有默认值) 例如, 以下函数说明不正确: f ( int par1 =1 , int par2 , int par3 =3 ); f ( int par1 =1 , int par2 =2 , int par3 ); f ( int par1 , int par=2 , int par3 ); 归纳起来, 在设置函数的默认参数值时要注意以下两点:(1)当函数既有说明又有定义后,不能再在函数定义中指定默认参数。(2)当一个函数中有多个默认参数时,则形参分布中默认参数应从右到左逐渐定义(如果右边参数定义了默认值,左边参数必须也定义默认值)。在函数调用时,系统按从左到右的顺序将实参与形参结合,当实参的数目不足时,系统将按同样的顺序用说明中或定义中的默认值来补齐所缺少的参数。1.4.3 内联函数 内联( inline ) 是内联扩展( inline expansion )的简称。与一般函数不同,C+编译器在遇到调用内联函数的地方会用函数体中的代码来替换函数的调用,好处是节省函数调用带来的参数传递、运行栈的入栈与出栈等开销,从而提高运行速度, 注意:内联函数的使用有一些限制:内联函数中不能定义任何静态变量(静态变量在本章后面介绍);内联函数不能使用任何循环以及switch和goto语句;内联函数不能是递归的;内联函数中不能说明数组。所以,内联函数一般是比较小的、经常被调用的、大多可在一行写完的函数。1.4.4 函数重载 函数重载要求编译器能够惟一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。#include int abs ( int x ) return x 0 ? x : -x ; double abs ( double x ) return x 0 ? x : -x ; void main () cout -10 的绝对值是: abs ( -10 ) endl ; cout -123.45 的绝对值是: abs ( -123.45 ) endl ; #include int min ( int a , int b ); int min ( int a , int b , int c ); int min ( int a , int b , int c , int d ); void main () cout min ( 13 , 5 , 4 , 9 ) endl;cout min ( -2 , 8 , 0 ) endl; int min ( inta , intb ) return a b ? a : b ; int min ( inta , intb , intc ) int t= min ( a , b ); return min ( t , c ); int min ( int a , int b , int c , int d ) int t1 = min (

温馨提示

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

评论

0/150

提交评论