C对C性能的扩充课件_第1页
C对C性能的扩充课件_第2页
C对C性能的扩充课件_第3页
C对C性能的扩充课件_第4页
C对C性能的扩充课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1第1章C++对C性能的扩充

面向对象程序设计与C++1第1章C++对C性能的扩充

面向对象程序设计与C++21行注释2输入输出3数据类型4变量主要内容5函数6new及delete7引用类型21行注释主要内容5函数31.行注释在C++中,新增了行注释////sum.cpp#include<iostream>//编译预处理命令usingnamespacestd;//使用命令空间stdintmain()//主函数首部{intx,y,sum;//定义3个整型变量

cout<<"Pleaseinputtwointegers:"<<'\n';

//提示用户由键盘输入两个整数

cin>>x;//从键盘输入变量x的值

cin>>y;//从键盘输入变量y的值

sum=x+y;//将x+y的值赋给整型变量sumcout<<"x+y="<<sum<<endl;//输出两个整数的和sumreturn0;//如程序正常结束,

//向操作系统返回一个数值0}<31.行注释在C++中,新增了行注释//<4C语言中我们用库函数printf和scanf对基本变量进行输入输出。如下程序:2.数据的输入和输出#include<stdio.h>voidmain(){ inta;

scanf("%d",&a);

printf("a=%d\n",a);}C++扩展了C的输入输出,不但可用printf、scanf函数,还可以用输入输出流。4C语言中我们用库函数printf和scanf对基本变量进行5C++输入输出标准流以上标准流为利用面向对象方法设计的输入输出流类的对象.使用cin的格式:cin>>变量名1[>>变量名2>>…变量名n]

使用cout的格式:cout<<表达1[<<表达式2<<表达式n>>]

5C++输入输出标准流以上标准流为利用面向对象方法设计的输入6#include<iostream.h>intmain(){for(inti=1;i<=3;i++){

cout<<"count="<<i<<endl;} inta;floatf;charc;

cin>>a>>f>>c;

cout<<"a="<<a<<"f="<<f<<"c="<<c<<endl; return0;}例如:注:使用cin与cout必须在程序开头包含iostream头文件!6#include<iostream.h>例如:注:使用c7C++输入输出流的优点简单易用,根据操作对象自适应,无需指定变量的类型;可对自定义的类型进行输入输出;提高了安全性和可扩展性。<7C++输入输出流的优点简单易用,根据操作对象自适应,无需指83.数据类型枚举类型

一般形式:enum枚举类型名{枚举列}[枚举变量表]C++中定义枚举变量时,不必在枚举名前加标识符enum

共用体类型同结构体类型,联合类型一旦定义,就可以直接使用联合名定义变量,而不用在联合体名前加标识符union。结构体类型:C++语言,结构体一旦定义,则可以直接使用该结构体名定义变量,不需在结构体前加struct标识。如:

structstudent{xxx};studentstu;另外,C++中的结构体类型所有的属性和方法都是公有的。新增类类型

C++中的struct作为特殊的类类型中不仅有属性数据还有成员函数,但是所有访问属性都是公有。83.数据类型枚举类型9C语言中我们都是用字符数组来表示字符串的,在C++除了可以用字符数组表示外,我们还可以用string类型来更方便的表示字符串,string实质上是C++标准库(stl)中用面向对象方法定义的字符串类,它并不是C++提供的基本类型。#include<iostream>#include<string>//必须包含此头文件usingnamespacestd;voidmain(){stringstr1;str1="abcdefg";stringstr2=str1;//用一个字符串给另一个赋值

cout<<str1<<endl;//对字符串进行输入输出

cout<<str1[5]<<endl;//操作字符串中的单个字符

str1[5]='k';cout<<str1<<endl;}string类型9C语言中我们都是用字符数组来表示字符串的,在C++除了可以10string字符串的运算C语言中对字符串进行运算要用到strcat(),strcpy(),strcmp()等库函数,C++中的string字符串类,可以直接用+,>,<,=等运算符对字符串进行操作。#include<iostream>#include<string>//必须包含此头文件usingnamespacestd;voidmain(){

stringstr1="abcd";stringstr2="efgh";cout<<str1+str2<<endl;//字符串连接

//字符串比较

if(str1<str2)cout<<"str1小于str2"<<endl;elsecout<<"str1大于等于str2"<<endl;}<10string字符串的运算C语言中对字符串进行运算要用到s114.变量正确理解C中的变量的定义要求:

一般应该集中定义出,不能在语句块中定义。程序例:

voidmain() {intx=1;//正确

for(inti=0;i<10;i++)//错误 {inty=2; } }

114.变量正确理解C中的变量的定义要求:

一般应该集中定12(1)C++变量定义规则可以采用“随用随定义”的方式定义出变量,即变量的块内定义C++中允许变量在使用之前的任一语句块中定义出来,包括for循环中何为块?块:C++语言把{}括起来的一块区域称为块。块变量:定义在某个块中的变量。块作用域:变量定义的由花括号括起来的范围,块变量在其作用域可见,而在作用域外不可见。12(1)C++变量定义规则可以采用“随用随定义”的方式定义13例如:#include<iostream.h>voidmain(void){ intx=1;//局部变量 {

inty;//块内变量

x=3;y=4; }cout<<"y="<<y<<endl;}voidmain(void){for(inti=1;i<10;i++){intz=1;//块内变量}

cout<<"z="<<z;}13例如:#include<iostream.h>void14正确理解C++中的变量的各种作用域

文件域—全局变量(其作用域为从定义点到当前文件结束有效)。函数域—局部变量(其作用域为本函数内有效)。函数原型域—函数的形参,为局部变量,只在该函数体内有效。块内域—块内定义的变量(比局部变量的作用域更小),块内定义的变量的作用域为从定义点到当前块内有效,语句块执行完毕,自动释放。

14正确理解C++中的变量的各种作用域文件域—全局变量(其15例如:intX=1; voidFunction(inta) {

intb=a;

X=b;

Y=X;}voidmain(){intY=2;

X=2;

Function(X);for(inti=0;i<10;i++){

X=2;

intC=0;

}

X=2,Y=3;C=X;a=3;b=4;}//错误//正确//正确//正确//正确//错误//全局变量//函数的形参//局部变量//局部变量//块定义的变量//块定义的变量15例如:intX=1; //错误//正确//16语句块内变量的应用目的

通过缩小变量的作用域来缩短变量的生存期,充分利用内存空间,优化内存的使用voidmain(){intX;//局部变量

for(X=1;X<10;X++)

{}}//在此时X才被释放voidmain(){for(intX=1;X<10;X++){//块内变量}

//在此时X就被释放}16语句块内变量的应用目的通过缩小变量的作用域来缩短变量的17(2)作用域运算符与命名空间C语言中变量命名的要求:在同一个程序中应该尽可能保持变量名的唯一性,最好不要同名。

#include"iostream.h"intX=1;voidmain(){intX=2;cout<<X;}相同吗?此时输出的X值是为“1”还是“2”系统采用同名覆盖原则决定,输出为2如果要输出全局变量X的值,怎么办?17(2)作用域运算符与命名空间C语言中变量命名的要求:#18C++中的全局作用域限定符作用:它能使程序员访问在某外部块中所定义的全局变量,以免被同名的局部变量所覆盖。访问规则:有::限定的同名符号是全局变量,无::限定的同名符号是局部变量。#include<iostream.h>intX=1; voidmain(){intX=2;cout<<"localX="<<X<<endl;

//未限定时的符号名为局部//符号名

cout<<"globalX="<<::X;//采用“::”限定时的符号名为全//局符号名}18C++中的全局作用域限定符作用:它能使程序员访问在某外19全局作用域限定符的编程规则(1)只能将“::”放在具有全局符号名说明的变量名之前,不能放在无全局符号名说明的局部变量名之前。intX=1; voidmain(void){intX=2;intY=3;::X=10;

//正确,因为有同名的全局符号名说明

::Y=4;

//错误,因为无同名的全局符号名说明}全局作用域限定符“::”不仅可以限定变量,也可以用来限定函数19全局作用域限定符的编程规则(1)只能将“::”放在具有全20名字空间--解决不同模块相同名字冲突问题。一个名字空间可以看作一个比程序模块更大的包。格式:NamespaceModuleName{<程序代码>}注:一个给定名字空间的所有代码可以位于同一个文件中,也可以分布在多个文件中,但是在每一个文件中代码都要按照上述语句格式进行封装。其作用域有两方面的含义:(1)同一个名字空间作用域内不允许存在同名标识符;(2)不同名字空间作用域内的标识符不能直接调用,需要添加名字空间的作用域限定运算符。20名字空间--解决不同模块相同名字冲突问题。注:一个给定名21例如://a.h#includenamespaceA{函数f1{}

函数f2{}变量s;}若要在A名字空间外,调用f1、f2函数和变量s,如何表达?

方法1:A::f1();方法2:#include“A.h”voidmain(){usingnamespaceA;f1();//名字空间A中的函数}21例如://a.h若要在A名字空间外,调用f1、f2函数和22(3)用const关键字定义常变量在C语言中我们用#define宏命令来定义常量,

#define只是在编译时进行字符串替换,运行时系统不为其分配内存空间。用它有时会出现意想不到的错误。如下所示:#include<iostream.h>#definePI3#defineRa+bintmain(){inta=2;intb=3;cout<<PI*R*R;return1;}程序输出15而不是想要的75的结构。因为PI*R*R被展开为了3*a+b*a+b

=15。因此C++提供了const关键字来定义常变量,用const定义的常变量具有变量量的一些属性。(有数据类型、占用内存空间、具有地址、可以用指针来指向它等),唯一和变量不同的是它的值只能在定义时指定。以后就不能通过任何形式改变。22(3)用const关键字定义常变量在C语言中我们用#de23#include<iostream.h>#definePI3//没有类型,不占用存储单元constintR=2+3;//有类型,有存储单元intmain(){inta=2;intb=3;cout<<PI*R*R<<endl;return1;}改进:23#include<iostream.h>改进:24#include<iostream.h>constfloatPI=3.1415926f;intmain(){ floatr; cout<<"请输入圆的半径值:(负值退出)"<<endl; cin>>r; while(r>=0) { cout<<"半径为"<<r<<"的圆的面积为:" <<PI*r*r<<","<<"周长为:" <<2*PI*r<<endl; cout<<"请输入圆的半径值:(负值退出)"<<endl; cin>>r; } return1;}例:分析如下程序的功能24#include<iostream.h>例:分析如下程25const定义常量const

类型常量名=表达式;或类型const常量名=表达式;

例如:constdoublepi=3.14;和doubleconstpi=3.14;两者等价!const定义数组常量:constinta[5]={1,2,3,4,5};

注:const定义常量必须初始化。25const定义常量const类型常量名=表达式;或26常量与指针一起使用

(1)指向常量的指针

constchar*name="chen";name[2]=‘i’;?name="stu";?

(2)常指针char*constname="chen"例如:name="stu";

name[1]=2;26常量与指针一起使用(1)指向常量的指针const27常量与指针一起使用(3)指向常量的常指针注:const定义一个整型常量,关键字int可以省略。constchar*constname=”chen”;

name[2]=‘i’;?name=”stu”;?

27常量与指针一起使用(3)指向常量的常指针注:const定28区分C语言中的#define与C++中的const的不同由#define所定义的符号名为全局性常量,因而在整个程序中应保持符号名的唯一性;const可以说明一个局部或全局性同名常量(据此可以改变const符号名之值)。另外在语法方面,#define为编译预处理命令,而const为定义符,语句以“;”结束。#defineMin1constintMax=100;voidmain(void){#defineMin2//错误,不能再定义同名常量

constintMax=200;//可以再定义同名局部常量}28区分C语言中的#define与C++中的const的不同29(4)函数形式上的转换任何系统定义的基本数据类型或用户自定义的数据类型的名字,都可作为函数使用,从而把变量(常量)从一种数据类型转换到另一种数据类型。例如:inti=20;floatx;x=int(i);(在C语言中则错误)<29(4)函数形式上的转换任何系统定义的基本数据类型或用户自30

C语言要求如果函数调用在函数定义之前,则应在函数调用之前对所调用的函数进行函数声明,但如果函数的返回值为整型,也可以不进行声明。如下例所示:#include<stdio.h>intmax(inta,intb);//函数声明voidmain(){ inta=max(2,3); printf("%d",a);}intmax(inta,intb){ if(a>=b) returna; else returnb;}intmax(inta,intb);就是对后面max函数的声明。由于max函数的返回值为整型,所以这里的声明也可以不要。但如果max的返回值不是整型,这必须对其进行声明。声明可以采用以下几种形式:intmax(inta,intb);//原型声明intmax();//无参声明max();//无参无返回值声明5.函数30#include<stdio.h>intmax(in31(1)C++中的函数声明在C++如果函数调用在函数定义之前。则必须在调用之前对其进行的函数声明(返回值为int的函数也必须声明)。而且必须采用函数原型声明的形式。#include<iostream.h>intmax(inta,intb);intmain(){ inta=max(2,3); cout<<a<<endl;}intmax(inta,intb){ if(a>=b) returna; else returnb;}C++中函数声明必须采用函数原型的形式:返回值

函数名(形参表);但在C++中函数的声明可以只有形参类型,而没有形参。如左边的例子中也可将函数申明写为:intmax(intint);要区分函数的定义、声明和调用以及它们的作用。31(1)C++中的函数声明在C++如果函数调用在函数定义之32(2)C++中函数的重载函数重载:C++中允许在同一作用域中用同一函数名定义多个函数(C语言中不可以)。这些函数的参数个数和参数类型不同。例1:跟据参数类型的不同进行重载#include<iostream.h>intmax(inta,intb){if(a>=b)returna;elsereturnb;}floatmax(floata,floatb){if(a>=b)returna;elsereturnb;}intmain(){intia,ib;floatfa,fb;cin>>ia>>ib;cout<<max(ia,ib)<<endl;cin>>fa>>fb;cout<<max(fa,fb)<<endl;}32(2)C++中函数的重载函数重载:C++中允许在同一作33例2:跟据参数个数的不同进行重载#include<iostream>usingnamespacestd;intmax(inta,intb){if(a>=b)returna;elsereturnb;}intmax(inta,intb,intc){if(b>a)a=b;if(c>a)a=c;returna;}intmain(){intia,ib,ic;cin>>ia>>ib>>ic;cout<<max(ia,ib)<<endl;cout<<max(ia,ib,ic)<<endl;}由以上两个例子的分析可以得出:对重载的函数进行调用时,主要根据函数参数类型和个数的不同来确定具体应该调用那一个函数。重载的函数能否仅仅只有返回值不同而形参完全相同?——调用重载函数时,函数返回值类型不在参数匹配检查之列

33例2:跟据参数个数的不同进行重载#include<io34(3)默认参数的函数C语言,函数调用时传给函数的实参个数必须与形参的个数相同,但C++可以让形参带有默认的值,从而可以让传递给函数的形参个数少于实参的个数。称为默认参数。这种机制有时候给我们带来很大的方便。尤其是在面向对象编程时类的构造函数。#include<iostream.h>voidGetDate(intday,intmonth=3,intyear=2011){cout<<year<<"/"<<month<<"/"<<day<<endl;}intmain(){ GetDate(20); GetDate(20,5); GetDate(20,5,2012); return1;}程序输出:2011/3/202011/5/202012/5/2034(3)默认参数的函数C语言,函数调用时传给函数的实参个数35实参与形参的结合是以从左到右的顺序进行的,第一个实参的值必须传递给第一个形参,第二个实参必然与第二个形参相结合。所以带函数的默认参数必须按从右到左的顺序进行默认。例如如下的函数默认参数是错误的。Fun(inta,intb=2,intc,intd=3);//错误默认参数的次序由以上的讨论我们可以发现,在有默认参数的函数中,实参的个数可以少于形参的个数,但实参的个数不能少于形参中没有默认的参数的个数。带默认值的函数的功能可以由函数的重载来实现!35实参与形参的结合是以从左到右的顺序进行的,第一个实参的值36使用带默认参数的函数时应注意的问题(1)如果函数的定义在函数的调用之前,则应在函数的定义中给出形参的默认值。如果函数的定义在函数的调用之后,则应在函数声明中给出参数的默认值,而在函数的定义中可以给出也可以不给出(视编译器而定,例如VC6.0中则只能在函数声明中给出,而在函数定义中不能给出默认参数)。为了避免混淆,我们最好只在函数声明中给出默认参数。(2)函数名重载时最好不要用缺省参数,否则会引起二义性

。例如:GetDate(intday,intmonth=4,intyear=2008);GetDate(intday);则如果有一个函数调用GetDate(20),系统无法判断应该调用哪一个函数(编译报错)。但如果第二个函数改为:GetDate(intdat,intmonth,intyear,inthour);则不会出现以上混淆。36使用带默认参数的函数时应注意的问题(1)如果函数的定义在37(4)内联函数(内置函数)

对函数的调用需要一定的时间和空间开销,对于有些需要频繁调用的函数这种开销会累积起来。C++对此提供了一种解决方法——内联函数。

内联函数:在编译时将被调函数的代码嵌入到主调函数中。这种嵌入到主调函数中的函数称为内联函数。定义内联函数只需在函数定义的前面加上关键字

inline.#include<iostream>usingnamespacestd;inlineintmax(inta,intb);voidmain(){ inta=max(2,3); cout<<a<<endl;}inlineintmax(inta,intb){ if(a>=b)returna; elsereturnb;}37(4)内联函数(内置函数)对函数的调用需要一定的时间38使用内联函数应注意:内联函数必须在函数第一次出现时由inline指定;内联函数代码不宜太大,原则上适宜1-5行代码的小函数;不能含有复杂的分支和循环等语句。递归调用函数不能定义为内联函数。<38使用内联函数应注意:内联函数必须在函数第一次出现时由in39//分配一个堆区动态数组int*p;inti;voidf(){cin>>i;p=(int*)malloc(sizeof(int)*i);}voidmain(){ f(); for(intj=0;j<i;j++) {p[j]=j*10;cout<<p[j]<<endl;} free(p);}6.动态分配/撤销内存的运算符new和deleteC语言中动态内存的分配与使用(堆区)//分配单个堆区变量#include<iostream.h>#include<malloc.h>voidmain(){int*p;p=(int*)malloc(sizeof(int));*p=4;cout<<*p<<endl;free(p);}39//分配一个堆区动态数组6.动态分配/撤销内存的运算符n40动态分配/撤销内存的运算符new和deleteC语言中使用库函数malloc和free,进行内存分配和撤销,malloc只能由用户给出大小来分配内存而不能自己确定数据类型,所以不适合面向对象自定义类型,C++提供了new和delete运算符来对内存进行动态分配和撤销(任兼容C语言的malloc和free函数)。

new和delete的用法:#include<iostream>usingnamespacestd;voidmain(){ int*p; p=newint; *p=4; cout<<*p<<endl; deletep;}int*p;inti;voidf(){ cin>>i; p=newint[i];}voidmain(){ f(); for(intj=0;j<i;j++) {

p[j]=j*10; cout<<p[j]<<endl; } delete[]p;}<40动态分配/撤销内存的运算符new和deleteC语言中使417.引用类型引用:就是给变量起一个别名,别名的定义,同一实体,两个不同的名称。C++中的引用:同一内存单元两种不同的变量名。通过引用,可以实现在不同的作用域内访问同一内存单元。417.引用类型引用:就是给变量起一个别名,别名的定义,同42voidmain(){intx=1;fun(x);}voidfun(int&a){ a=3;}您知道x与a是什么关系吗?42voidmain()您知道x与a是什么关系吗?43引用定义的语法类型定义符&变量名=原变量名;inta=3;int&ra=a;(声名ra为a的引用,ra就是a,a就是ra.改变了ra就改变了a,改变了a也就改变了ra);即ra与a为同一个变量,但在不同的应用场合下(作用域内)以不同的变量名出现。

43引用定义的语法类型定义符&变量名=原变量名;44必须定义的同时使之初始化。引用并不另开辟内存空间。声明了一个变量的引用后,就不能在将其改为别的变量的引用。如下程序。注意!!!#include<iostream>usingnamespacestd;intmain(){inta=2,b=3;int&ra=a;ra=b;//?b=6; cout<<"a="<<a<<endl<<"b="<<b<<endl<<"ra="<<ra<<endl;

}声明对一个一般变量的引用44必须定义的同时使之初始化。引用并不另开辟内存空间。注意!45引用实际上是一隐指针,是对变量的间接引用,但不必加运算符“*“。引用不同于其他变量。

不能定义引用数组;如:int&x[10]错误。

不能建立指向引用的指针;如:int&*p错误。

不能建立引用的引用;如:int&&x;错误。inti;int&j=i;int*p=&j;?

45引用实际上是一隐指针,是对变量的间接引用,但不必加运算符46为什么要提供引用操作符

C++中的引用主要是用来解决函数调用中形参为指针型的参数时其函数体时的不安全性(易出错),使得操作更加简单、安全。例如:46为什么要提供引用操作符C++中的引用主要是用来解决函数47

intadd(int&X,int&Y){X=X+Y;returnX; }voidmain(){inta=1,b=2;add(a,b);}intadd(int*X,int*Y){ *X=*X+*Y; return*X; } voidmain(){inta=1,b=2;add(&a,&b);}改进为47intadd(int&X,int&Y)int48引用调用的优点

通过引用调用可以提高调用速度,因为只需要传送地址而不需要直接将大量数据拷贝,因而特别适用于形参为大量数据的应用场合。

structData{inta[1000]; }AData;voidfun(structDataX){}

structData{inta[1000]; }AData;voidfun(structData&X){}改进为您知道为什么要这样做呢?48引用调用的优点通过引用调用可以提高调用速度,因为只需要49正确区分传值调用与传地址调用

C语言中,函数参数传递有两种方式:变量名作实参和变量地址作实参。C++中有扩充了一种变量引用作实参。下面分别回顾一下:(1)变量名作实参

变量名作实参就是直接将变量或变量的值传递给函数的形参。这种方式在函数栈中为形参分配空间。并将实参的值复制到该空间中,因为实参和形参在不同的空间,所以传递是单向的。只能由实参将值复制给形参,形参的改变不影响实参的值。49正确区分传值调用与传地址调用C语言中,函数参数传递有两50例如:#include<iostream.h>voidswap(inta,intb);intmain(){inta=2,b=4;swap(a,b);cout<<"a="<<a<<"b="<<b<<endl;return1;}voidswap(inta,intb){ inttemp=a; a=b; b=temp;}程序输出:a=2b=4;可见swap函数并不能实现将实参交换的作用。50例如:#include<iostream.h>void51(2)变量地址作实参

变量地址作实参是将函数的参数定义为指针类型,调用函数的时候将变量的地址作为实参传递给函数。这种传值方式也是单向传递,但和变量名作实参不同的是它将实参变量的内存地址复制给形参。所以可以在函数栈中直接通过变量地址来改变实参的值。51(2)变量地址作实参

变量地址作实参是将52#include<iostream>usingnamespacestd;voidswap(int*a,int*b);intmain(){ inta=2,b=4; swap(&a,&b);//传递变量地址

cout<<"a="<<a<<"b="<<b<<endl; return1;}voidswap(int*pa,int*b){ inttemp=*pa; *pa=*pb; *pb=temp;}程序输出:a=4b=2;可见swap函数实现了将实参交换的作用。间接的实现了函数传参的双向传递。52#include<iostream>voidswap53(3)变量引用作实参

变量引用作实参是将函数的参数定义为引用类型,调用函数的时候将变量名作为实参传递给函数。这种传值方式是双向传递,实参和形参共享同一内存空间。改变了形参也就改变了实参。53(3)变量引用作实参

变量引用作实参是将54#include<iostream>usingnamespacestd;voidswap(int&a,int&b);intmain(){ inta=2,b=4; swap(a,b); cout<<"a="<<a<<"b="<<b<<endl; return1;}voidswap(int&a,int&b){ inttemp=a; a=b; b=temp;}程序输出:a=4b=2;可见swap函数实现了将实参交换的作用。这种传参方式和变量名作参数的唯一不同是定义函数时将形参声名为引用类型。其余都和变量名作参数完全相同。<54#include<iostream>voidswap55区分引用在如下两种场合的差别

(1)对一般的变量进行引用:如引用的变量不是用作函数的形参或返回值,则声明时必须加以初始化以指明它的同地址变量。

voidmain(void) {intX=3;int&refX=X;fun(refX);cout<<X;

//X的值被改变为4}

voidfun(int&a) {a++;//a为refX的引用}

55区分引用在如下两种场合的差别(1)对一般的变量进行引用56intadd(int&X=1,int&Y=2){X=X+Y;returnX;}

正确的参数声明错误的参数声明(2)函数的形参为引用:如引用的变量用作函数的形参或返回值,则说明时不要加以初始化以指明它的同地址变量,此时形参为实

温馨提示

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

评论

0/150

提交评论