Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682264
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-08-18 21:13:11

函数的操作数,形参

求最大公约数

void gcd(int a,int b){

    while(b){

       int temp = b;

       b = a%b;

       a = temp;

    }

    cout<

}

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

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

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

int st(){

    static int count(0);

    return ++count;

}

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

{

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

       cout<

}

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

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

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

    cout<

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

阅读(885) | 评论(0) | 转发(0) |
0

上一篇:川子的民谣音乐

下一篇:捉鼠记

给主人留下些什么吧!~~