正在加载图片...
化变量的形式来定义缺省值。如: char screeninit(int height=24, int width=80, char background=-) 以下几种调用方式都是合法的 cursor=screeninito cursor=screeninit(48) cursor=screeninit(48,96, # 注意:在带缺省值的参数表中,所有带缺值的参数必须话参数表的最后,且在程序的 个源文件中,某个函数的一个参数只能在一次说明中指定它的缺省值,否则会造成编译错误 定义函数时,在参数中所描述的函数参数称为形式参数。在函数调用处,函数名后的括 号中的常量、变量或表达式的值称为函数的实际参数。函数调用的参数传递过程就是用实际 参数来对形式参数进行初始化 C++中参数传递方式有三种: (1)、按值传递方式(默认方式)。在该方式下,系统将各实际参数的值复制给形式参 数,在函数体中对形式参数的修改并不会对实际参数产生任何影响,且它们在函数返回时自 动消亡。因而没有必要对实际参数进行备份。 按值传递方式并不适合所有的函数参数传递。如较大的对象作为实际参数传递给函数或 作为返回值传递给函数调用处。因为需要消耗大量的存储空间和运行时间。 (2)、按址传递方式。该方式需要将形式参数说明为指针,与之相应,在函数误用时对 应的实际参数也是一指针变量。它们都有指向同一个内存地址,且该内存地址所在的内存区 域并非为被调用函数的运行而专门开辟的。在函数调用完毕之后并不消亡。这种方式节约了 时间和空间。 (3)、将形式参数说明为引用类型,即在形式参数的数据类型和变量名之间加一个取址 操作符,如: void inverse( double &val) 引用型参数将实参作为左值传递给函数,使得在函数内对参数的值的修改不再作用于局 部拷贝,而是针对实参进行,也无需复制整个对象,节约了时间和空间。 注意:①、当引用型参数是整型或浮点型时,实参和形参的类型不匹配时,系统会自动 产生一个符合类型匹配规则的临时对象,并将实参的右值赋给它,然后再由它传给函数,这 并没有反映到实参的变化上,容易造成混乱。编译会给出警告信息。 ②、在用数组作为函数参数时,进行传递的是该数组的首元素的指针,因而它是 按址传递的。此外数组的元素个数并不是函数参数类型的一部分(未知),因而容易发生错 误,应该引起高度重视。 3.3.3内联函数 在程序中对函数进行调用时有两种处理方法 (1)、对于普通函数,系统将在函数调用处设置断点,并将当前函数的现场保留起来, 将控制权交给被激活的函数,当被调用函数运行完毕返回时,再恢复被保留起来的现场,从 调用函数的断点处继续往下运行。 (2)、对于说明为 inline类型的内联函数,则在程序编译时,编译器会将该函数在调用 点进行展开,使该函数的函数体部分作为调用函数的一部分溶入调用函数中。因此进行内联 函数调用时不需要保留现场,也不会发生控制权转移,因此可降低开销。 内联函数是在编译时能够在函数的调用点处进行展开的函数。对内联函数的定义是在普 通函数的定义之前加一个标识符 inline,如:化变量的形式来定义缺省值。如: char * screeninit(int height=24,int width=80,char background=’-‘); 以下几种调用方式都是合法的: char *cursor; cursor=screeninit(); cursor=screeninit(48); cursor=screeninit(48,96,’#’); 注意:在带缺省值的参数表中,所有带缺值的参数必须话参数表的最后,且在程序的一 个源文件中,某个函数的一个参数只能在一次说明中指定它的缺省值,否则会造成编译错误。 定义函数时,在参数中所描述的函数参数称为形式参数。在函数调用处,函数名后的括 号中的常量、变量或表达式的值称为函数的实际参数。函数调用的参数传递过程就是用实际 参数来对形式参数进行初始化。 C++中参数传递方式有三种: (1)、按值传递方式(默认方式)。在该方式下,系统将各实际参数的值复制给形式参 数,在函数体中对形式参数的修改并不会对实际参数产生任何影响,且它们在函数返回时自 动消亡。因而没有必要对实际参数进行备份。 按值传递方式并不适合所有的函数参数传递。如较大的对象作为实际参数传递给函数或 作为返回值传递给函数调用处。因为需要消耗大量的存储空间和运行时间。 (2)、按址传递方式。该方式需要将形式参数说明为指针,与之相应,在函数误用时对 应的实际参数也是一指针变量。它们都有指向同一个内存地址,且该内存地址所在的内存区 域并非为被调用函数的运行而专门开辟的。在函数调用完毕之后并不消亡。这种方式节约了 时间和空间。 (3)、将形式参数说明为引用类型,即在形式参数的数据类型和变量名之间加一个取址 操作符,如: void inverse(double &val); 引用型参数将实参作为左值传递给函数,使得在函数内对参数的值的修改不再作用于局 部拷贝,而是针对实参进行,也无需复制整个对象,节约了时间和空间。 注意:①、当引用型参数是整型或浮点型时,实参和形参的类型不匹配时,系统会自动 产生一个符合类型匹配规则的临时对象,并将实参的右值赋给它,然后再由它传给函数,这 并没有反映到实参的变化上,容易造成混乱。编译会给出警告信息。 ②、在用数组作为函数参数时,进行传递的是该数组的首元素的指针,因而它是 按址传递的。此外数组的元素个数并不是函数参数类型的一部分(未知),因而容易发生错 误,应该引起高度重视。 3.3.3 内联函数 在程序中对函数进行调用时有两种处理方法: (1)、对于普通函数,系统将在函数调用处设置断点,并将当前函数的现场保留起来, 将控制权交给被激活的函数,当被调用函数运行完毕返回时,再恢复被保留起来的现场,从 调用函数的断点处继续往下运行。 (2)、对于说明为 inline 类型的内联函数,则在程序编译时,编译器会将该函数在调用 点进行展开,使该函数的函数体部分作为调用函数的一部分溶入调用函数中。因此进行内联 函数调用时不需要保留现场,也不会发生控制权转移,因此可降低开销。 内联函数是在编译时能够在函数的调用点处进行展开的函数。对内联函数的定义是在普 通函数的定义之前加一个标识符 inline, 如:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有