文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>第七章 函数

第七章 函数

时间:2010-08-18  来源:静止的流水

函数的操作数,形参

求最大公约数

void gcd(int a,int b){

    while(b){

       int temp = b;

       b = a%b;

       a = temp;

    }

    cout<<a<<endl;

}

调用操作符一对圆括号实现函数的调用

函数调用:用对应的实参初始化形参,将控制权交给调用函数,主调函数挂起,被调函数开始执行。

函数体形成一个作用域,在函数体内定义的变量,只有在函数体内可以访问到,并且只在函数运行期间存在,但是static变量可以超越函数作用域而存在。

int st(){

    static int count(0);

    return ++count;

}

int main(int argc, _TCHAR* argv[])

{

    for(int i = 0 ; i < 10 ; ++i)

       cout<<st()<<endl;

}

形参和局部变量的区别仅仅在于,形参是在形参表中定义的,并且是由实参初始化的。

实参和形参的个数必须完全相同,默认实参的函数除外,类型必须是相同或者可以隐式转换的,提供默认实参的函数,默认实参后面的形参必须也具有默认实参。在调用的时候从前面的形参开始拟合。

void test(int a = 10,int b = 20){

    cout<<a<<endl;

}

test(20);打印出来的是20,对a初始化为20,b依然是20

函数不能返回内置数组类型和另外一个函数,必须显式的指定函数返回值类型,即使是void也要写,但是类的构造函数除外,构造函数是和类同名,但是无返回值的特殊函数。

参数传递分为传值调用和传址调用两种

普通的非引用形参通过复制实参的值初始化,函数访问的只是形参这个局部变量,并没有访问实参,对形参的修改也没有修改到实参。

通过指针形参传址的话,指针的值是一个局部变量,但是可以通过对指针指向的地址来操作实参指向的同一个地址,如需保护实参的值,可以把形参指针声明为const指针。

指针指向const类型还是非const类型,将影响函数调用的实参,可以用int*或者const int*调用test(int *)函数,但是近能用int*调用test(const int*)原因在于我们可以把指向const对象的指针初始化为非const对象,但是不可以把非const对象的指针初始化为const对象。

可以用const实参也可以传递非const实参给使用非引用非const形参的函数。

原因在于初始化的时候复制的实参的值。可以用const对象或非const对象调用形参为const int类型的函数。

非const引用形参只能与完全类型相同的非const对象关联,不能通过右值或具有需转换的类型对象调用。

应该将不需要修改的引用形参定义为const引用,普通的非const引用形参在使用时不太灵活,不能用const对象初始化,也不能用字面值(右值)或产生右值的表达式调用。

C++程序员倾向于传递容器的迭代器来传递容器

在返回值类型为void的函数中,return语句不是必须的,在最后一句后面会调用隐式的return语句。

函数返回非引用类型的时候,可以返回局部对象,也可以是表达式的结果

不能返回局部对象的引用,也不能返回局部对象的指针

返回引用的函数返回的是一个左值,可以对它进行赋值运算

内联函数,在函数返回类型前面加上inline就是一个内联函数,内联函数一般适用于小的,只有几行的函数,并且应该在头文件中定义,在类定义内定义的函数默认为内联函数。

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载