C++
Ranige
java开发
展开
-
5.4、用数组名作为函数参数
常量和变量可以用作函数实参,同样数组元素也可以作函数实参,其用法与变量相同。数组名也可以作实参和形参,传递的是数组的起始地址。用数组元素作函数实参由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素当然可以作为函数的实参,与用变量作实参一样,将数组元素的值传送给形参变量。【例5.6】用函数处理例5.5。算法和例5.5是一样的,今设一函数max_value原创 2015-03-09 11:38:22 · 1593 阅读 · 0 评论 -
4.6、函数的重载
在编程时,有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。程序设计者往往会分别设计出3个不同名的函数,其函数原型为: int max1(int a, int b, int c); //求3个整数中的最大者 double max2(double a, double b原创 2015-03-06 11:17:40 · 425 阅读 · 0 评论 -
4.5、内置函数
调用函数时需要一定的时间和空间的开销。 C++提供一种提高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内置函数(inline function),又称内嵌函数。在有些书中把它译成内联函数。指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。【例4.4】函数指定为内置函数。原创 2015-03-06 11:06:30 · 337 阅读 · 0 评论 -
3.9、if else 语句
if语句的3种形式1) if(表达式) 语句。例如: if(x>y) cout这种if语句的执行过程见图3.5(a)。2) if(表达式) 语句1 else 语句2例如: if (x>y) cout else cout见图3.5(b)。图 3.53) if(表达式1) 语句1 else if(表达原创 2015-03-06 09:01:39 · 474 阅读 · 0 评论 -
3.8、关系运算与逻辑运算
往往要求根据某个指定的条件是否满足来决定执行的内容。例如,购物在1000元以下的打九五折,1000元及以上的打九折。C++提供if语句来实现这种条件选择。如: if amount else tax=0.9; //若amount pay=amount*tax; //pay为实付款流程可以用图3.4表示。图 3.4关系运算和关系表达原创 2015-03-06 09:01:14 · 1696 阅读 · 0 评论 -
4.19、C++条件编译
一般情况下,在进行编译时对源程序中的每一行都要编译。但是有时希望程序中某一部分内容只在满足一定条件时才进行编译,也就是指定对程序中的一部分内容进行编译的条件。如果不满足这个条件,就不编译这部分内容。这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令常用的有以下形式:1) #ifdef 标识符 程序段1#e原创 2015-03-06 16:33:59 · 493 阅读 · 0 评论 -
5.1、C++数组的概念
概括地说:数组是有序数据的集合。要寻找一个数组中的某一个元素必须给出两个要素,即数组名和下标。数组名和下标惟一地标识一个数组中的一个元素。数组是有类型属性的。同一数组中的每一个元素都必须属于同一数据类型。一个数组在内存中占一片连续的存储单元。如果有一个整型数组a,假设数组的起始地址为2000,则该数组在内存中的存储情况如图5.1所示。图 5.1引入数组就不需要在程序原创 2015-03-06 16:52:25 · 473 阅读 · 0 评论 -
5.2、C++一维数组
定义一维数组定义一维数组的一般格式为: 类型标识符 数组名[常量表达式];例如: int a[10];它表示数组名为a,此数组为整型,有10个元素。获得数组的长度:sizeof(arry)/sizeof(arry[int]),int可以为任意整数关于一维数组的几点说明:1) 数组名定名规则和变量名相同,遵循标识符定名规则。2) 用方括号括起原创 2015-03-06 17:22:07 · 768 阅读 · 0 评论 -
3.15、循环的嵌套
几种循环的比较:1) 3种循环都可以用来处理同一问题,一般情况下它们可以互相代替。2) while和do-while循环,是在while后面指定循环条件的,在循环体中应包含使循环趋于结束的语句(如i++,或i=i+1等)。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for原创 2015-03-06 09:40:40 · 606 阅读 · 0 评论 -
3.12、编写选择结构的程序
下面,通过两个实例来说明如何编写较为复杂的C++程序。【例3.8】编写程序,判断某一年是否为闰年。#include using namespace std;int main( ){ int year; bool leap; cout<<"please enter year:";//输出提示 cin>>year; //输入年份 if (year%4==0原创 2015-03-06 09:26:35 · 425 阅读 · 0 评论 -
4.14、变量的声明和定义
我们已经知道,一个函数一般由两部分组成:声明部分和执行语句。声明部分的作用是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行说明。对于函数,声明和定义的区别是明显的,前边已说明,函数的声明是函数的原型,而函数的定义是函数功能的确立。对函数的声明是可以放在声明部分中的,而函数的定义显然不在函数的声明部分范围内,它是一个文件中的独立模块。对变量而言,声明与定义的关系稍微复杂一原创 2015-03-06 13:59:17 · 396 阅读 · 0 评论 -
4.13、变量属性小结
一个变量除了数据类型以外,还有3种属性:存储类别 C++允许使用auto,static,register和extern 4种存储类别。作用域 指程序中可以引用该变量的区域。存储期 指变量在内存的存储期限。以上3种属性是有联系的,程序设计者只能声明变量的存储类别,通过存储类别可以确定变量的作用域和存储期。要注意存储类别的用法。auto, static和register 3种存原创 2015-03-06 11:44:34 · 380 阅读 · 0 评论 -
4.12、变量的存储类别
动态存储方式与静态存储方式我们已经了解了变量的作用域。作用域是从空间的角度来分析的,分为全局变量和局部变量。变量还有另一种属性——存储期(storage duration,也称生命期)。存储期是指变量在内存中的存在期间。这是从变量值存在的时间角度来分析的。存储期可以分为静态存储期(static storage duration)和动态存储期(dynamic storage du原创 2015-03-06 11:43:09 · 387 阅读 · 0 评论 -
4.11、局部变量和全局变量
局部变量在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。同样,在复合语句中定义的变量只在本复合语句范围内有效。这称为局部变量(local variable)。如:对局部变量的一些说明:1) 主函数main中定义的变量(m, n)也只在主函数中有效,不会因为在主函数中定义而在整个文件或程序中有效原创 2015-03-06 11:35:00 · 643 阅读 · 0 评论 -
4.8、函数的默认参数
一般情况下,在函数调用时形参从实参那里取得值,因此实参的个数应与形参相同。有时多次调用同一函数时用同样的实参,C++提供简单的处理办法,给形参一个默认值,这样形参就不必一定要从实参取值了。如有一函数声明: float area(float r=6.5);指定r的默认值为6.5,如果在调用此函数时,确认r的值为6.5,则可以不必给出实参的值,如: area( ); //相当于原创 2015-03-06 11:27:48 · 479 阅读 · 0 评论 -
4.7、C++函数模版
C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。看下面的例子就清楚了。【例4.7】将例原创 2015-03-06 11:23:05 · 329 阅读 · 0 评论 -
4.9、C++函数的嵌套调用
C++不允许对函数作嵌套定义,也就是说在一个函数中不能完整地包含另一个函数。在一个程序中每一个函数的定义都是互相平行和独立的。虽然C++不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。在程序中实现函数嵌套调用时,需要注意的是:在调用函数之前,需要对每一个被调用的函数作声明(除非定义在前,调用在后)。【例4.9】用弦截法求方程f(x)原创 2015-03-06 11:30:10 · 2246 阅读 · 0 评论 -
6.3、指针作为函数参数
函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参。【例6.3】题目同例6.2,即对输入的两个整数按大小顺序输出。这里用函数处理,而且用指针类型的数据作函数参数。程序如下:#include using namespace std;int main( ){ void swap(int *p1,int *p2); /原创 2015-03-09 17:19:44 · 753 阅读 · 0 评论 -
6.2、变量与指针
指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量,见图6.3。下面两个语句作用相同: i=3; *i_pointer=3;图 6.3定原创 2015-03-09 16:34:56 · 497 阅读 · 0 评论 -
6.1、指针的概念
为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,C++编译系统一般为整型变量分配4个字节,为单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这图6.1就是“地址”。图6.1请务必弄清楚一原创 2015-03-09 15:13:40 · 413 阅读 · 0 评论 -
5.7、字符数组的输入输出
字符数组的输入输出可以有两种方法:1) 逐个字符输入输出,如例5.9。2) 将整个字符串一次输入或输出。例如有以下程序段: char str[20]; cin>>str; //用字符数组名输入字符串 cout在运行时输入一个字符串,如: China↙在内存中,数组str的状态如图5.9所示,在5个字符的后面自动加了一个结束符′\0′。原创 2015-03-09 14:30:30 · 1649 阅读 · 0 评论 -
5.5、C++字符数组
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。字符数组的定义和初始化定义字符数组的方法与前面介绍的类似。例如: char c[10]; c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]原创 2015-03-09 14:02:32 · 559 阅读 · 0 评论 -
5.3、C++二维数组
具有两个下标的数组称为二维数组。有些数据要依赖于两个因素才能惟一地确定,例如有3个学生,每个学生有4门课的成绩,显然,成绩数据是一个二维表,如书中表5.1所示。表5.1 学生成绩数据表学生序号课程1课程2课程3课程4课程5学生18578999688学生27689759775学生3原创 2015-03-09 11:24:55 · 1176 阅读 · 0 评论 -
5.8、字符串处理函数
字符串连接函数 strcat其函数原型为 strcat(char[],const char[]);strcat是string catenate(字符串连接)的缩写。该函数有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面。第二个字符数组被指定为const,以保证该数组中的内容不会在函数调用期间修改。连接后的字符串放在第一个字符数组中,函原创 2015-03-09 14:45:32 · 454 阅读 · 0 评论 -
5.6、字符串和字符串结束标志
用一个字符数组可以存放一个字符串中的字符。如: char str[12]={'I',' ','a','m',' ','h','a','p','p','y'};用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。为了测定字符串的实际长度,原创 2015-03-09 14:14:18 · 901 阅读 · 0 评论 -
5.9、C++处理字符串方法
用字符数组来存放字符串并不是最理想和最安全的方法。C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对原创 2015-03-09 15:04:47 · 336 阅读 · 0 评论 -
4.18、C++文件包含处理
文件包含的作用所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C++提供了#include命令用来实现“文件包含”的操作。如在file1.cpp中有以下#include命令: #include ″file2.cpp″它的作用见图4.18示意。图4.18“文件包含”命令是很有用的,它可以节省程序设原创 2015-03-06 15:26:56 · 639 阅读 · 0 评论 -
4.17、C++宏定义
可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为: #define 标识符 字符串这就是已经介绍过的定义符号常量。如: #define PI 3.1415926还可以用#define命令定义带参数的宏定义。其定义的一般形式为: #define 宏名(参数表) 字符串如:原创 2015-03-06 15:16:06 · 420 阅读 · 0 评论 -
4.15、内部函数和外部函数
函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用。根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。内部函数如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。函数首部的一般格式为: static 类型标识符 函数名(形参表);如原创 2015-03-06 14:19:10 · 516 阅读 · 0 评论 -
4.16、C++预处理命令
可以在C++源程序中加入一些“预处理命令”(preprocessor directives),以改进程序设计环境,提高编程效率。预处理命令是C++统一规定的,但是它不是C++语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。现在使用的C++编译系统都包括了预处理、编译和连接等部分,因此不少用户误认为预处理命令是C++语言的一部分,甚至以为它们是C++语句,这是不对的。原创 2015-03-06 14:42:06 · 454 阅读 · 0 评论 -
4.10、函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归(recursive)调用。C++允许函数的递归调用。例如:int f(int x){ int y, z; z=f(y); //在调用函数f的过程中,又要调用f函数 return (2*z);}以上是直接调用本函数,见图4.9。图4.10表示的是间接调用本函数。在调用f1函数过程中要调原创 2015-03-06 11:31:47 · 610 阅读 · 0 评论 -
java中的重载
java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载,编译器会根据实际情况挑选出正确的方法,如果编译器找不到匹配的参数或者找出多个可能的匹配就会产生编译时错误,这个过程被称为重载的解析 1 普通方法的重载 普通方法的重载是Java实现多态技术的重要手段,为编程带来了很多便利 当方法同名时,为了让编译器区别他们,至少需要下面之一不同 1 参原创 2015-03-06 11:14:44 · 241 阅读 · 0 评论 -
4.4、函数的调用以及函数原型
函数调用的一般形式函数调用的一般形式为: 函数名([实参表列]);如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。实参与形参按顺序对应,一对一地传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。函数调用的方式按函数在语句中的作用来原创 2015-03-06 10:59:23 · 1315 阅读 · 0 评论 -
2.7、自增和自减运算符
在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如:++i(在使用i之前,先使i的值加1,如果i的原值为3,则执行j=++i后,j的值为4)--i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为2)i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4)原创 2015-03-05 14:43:28 · 413 阅读 · 0 评论 -
2.5、C++的运算符
C++的运算符十分丰富,使得C++的运算十分灵活方便。例如把赋值号(=)也作为运算符处理,这样,a=b=c=4就是合法的表达式,这是与其他语言不同的。C++提供了以下运算符:算术运算符+(加) -(减) *(乘) /(除) %(整除求余) ++(自加) --(自减)关系运算符>(大于) =(大于或等于) 逻辑运算符&&(逻辑与) ||(逻辑或) !(逻辑非原创 2015-03-05 14:41:03 · 360 阅读 · 0 评论 -
2.3、C++变量
其实在前面的例子中已经多次用到了变量。在程序运行期间其值可以改变的量称为变量。一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念,见图2.6。图2.6变量名规则先介绍标识符的概念。和其他高级语言一样,用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。简单原创 2015-03-05 14:39:16 · 653 阅读 · 0 评论 -
2.2、C++常量
数值常量数值常量就是通常所说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别其类型。整型常量(整数)的类型在上一节中已知道:整型数据可分为int, short int,long int以及unsigned int, unsigned short, unsigned long等类别。整型常量也分为以上类别。为什么将数值常量区分为不同的类别呢?因为在进行赋值或函数的参数虚实原创 2015-03-05 14:35:28 · 1438 阅读 · 0 评论 -
1.4 C++程序的编写与实现
一个程序从编写到最后得到运行结果要经历以下一些步骤。用C++语言编写程序用高级语言编写的程序称为“源程序”(source program)。C++的源程序是以.cpp作为后缀的(cpp是c plus plus 的缩写)。对源程序进行编译为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(complier)”的软件(也称编译程序或编译系统),把源程序翻译成二进制形式的原创 2015-03-05 14:27:25 · 442 阅读 · 0 评论 -
1.1、从 C 到 C++
C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用C语言编写的。但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原创 2015-03-05 14:15:10 · 659 阅读 · 0 评论 -
3.5、getChar()和putChar()函数
C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和putchar函数。putchar函数(字符输出函数)putchar函数的作用是向终端输出一个字符。例如: putchar(c);它输出字符变量c的值。【例3.2】输出单个字符。#include //或者包含头文件stdio.h:#include using n原创 2015-03-05 15:41:01 · 740 阅读 · 0 评论