本文共 1991 字,大约阅读时间需要 6 分钟。
通过使用函数(functions)我们可以把我们的程序以更模块化的形式组织起来,从而利用C++所能提供的所有结构化编程的潜力。 一个函数(function)是一个可以从程序其它地方调用执行的语句块。以下是它的格式:
type name ( argument1, argument2, …) statement
一个函数的例子:
#includeint add(int a, int b){ int r; r=a+b; return (r);}int main (){ int z; z = add(5,3); printf("The result is %d\n", z); return 0;}
函数参数按地址传递:
#includevoid swap(int& a, int& b){ int temp =a; a = b; b = temp;}int main (){ int x = 1, y = 3; printf("begin swap:x=%d,y=%d\n", x, y); swap(x, y); printf("after swap:x=%d,y=%d\n", x, y); return 0;}
函数参数的默认值: 当声明一个函数的时候我们可以给每一个参数指定一个默认值。如果当函数被调用时没有给出该参数的值,那么这个默认值将被使用。指定参数默认值只需要在函数声明时把一个数值赋给参数。如果函数被调用时没有数值传递给该参数,那么默认值将被使用。但如果有指定的数值传递给参数,那么默认值将被指定的数值取代。例如
#includeint divide(int a, int b=2) { int r; r=a/b; return (r);}int main () { printf("divide(12) = %d\n", divide(12)); printf("divide(20,4) = %d\n", divide(20,4)); return 0;}
两个不同的函数可以用同样的名字,只要它们的参量(arguments)的原型(prototype)不同,也就是说你可以把同一个名字给多个函数,如果它们用不同数量的参数,或不同类型的参数。例如:
#includeint divide(int a, int b) { return (a/b);}float divide(float a, float b) { return (a/b);}int main () { int x=5,y=2; float m=5.0, n=2.0; printf("divide(x, y) = %d\n", divide(x, y)); printf("divide(m, n) = %f\n", divide(m, n)); return 0;}
inline指令可以被放在函数声明之前,要求该函数必须在被调用的地方以代码形式被编译。这相当于一个宏定义(macro)。它的好处只对短小的函数有效,这种情况下因为避免了调用函数的一些常规操作的时间(overhead),如参数堆栈操作的时间,所以编译结果的运行代码会更快一些。 它的声明形式是: inline type name ( arguments … ) { instructions … } 它的调用和其他的函数调用一样。调用函数的时候并不需要写关键字inline ,只有在函数声明前需要写。
自考的学习,让自己对c++知道的多了些,对以前学习的知识有了一些共鸣,甚至惊喜的认为,好好学习面向对象可以从面向过程到面向对象的转变入手,学习中发现了自己的好奇心,简直像个孩子在沙滩捡贝壳。
转载地址:http://boexi.baihongyu.com/