函数

1、函数不能返回另一个函数或者内置数组类型,但可以返回指向函数的指针,或指向数组元素的指针的指针。

2、const形参:在调用参数时,如果该函数使用非引用的非const形参,则既可给该函数传递const实参,也可传递const的实参。在函数中,不可以改变实参的局部副本。
尽管函数的形参是const,但是编译器却将fcn的定义视为其形参被声明为普通的int型:
void fcn(const int i){}
void fcn(int i){}   //error:redefines fcn(int)

3、使用引用形参返回额外的信息
vector::const_iterator find_val(vector::const_iterator beg,vector::const_iterator end,int value,vector::size_type &occurs){}

4、非const引用形参只能与完全同类型的非const对象关联,传递一个右值或具有需要转换的类型的对象同样是不允许的。
如:int incr(int &val)
{
         return ++val;
}
short v1 = 0;
const int v2 = 42;
int v3 = incr(v1);    //error:v1 is not an int。
v3 = incr(v2);    //error:v2 is const
v3 = incr(0);   //error:literals are not lvalues
v3 = incr(v1 + v2);   //error:addition doesn't yield an lvalue
int v4 = incr(v3);   //ok:v3 is a non const object type int

5、普通的非const引用形参在使用时不太灵活,既不能用const对象初始化,也不能用字面值或产生右值的表达式实参初始化。

6、数组形参:不能直接传递数组,但是函数的形参可以写成数组的形式。

7、通过引用传递数组:编译器检查数组实参的大小与形参的大小是否匹配。

8、main:处理命令行选项
假设主函数面位于名为prog的可执行文件中,可如下将实参选项传递给程序:
prog -d -o ofile data0
实际上是在main中定义了两个形参:
int main(int argc , char *argv[]){}
第二个形参argv是一个C风格字符串数组,第一个形参argc则用于传递该数组中字符串的个数。
如上命令行,argc应设为5,argv会保存下面几个C风格字符串:
argv[0] = “prog”;
argv[1] = “-d”;
argv[2] = “-o”;
argv[3] =“ofile”;
argv[4] =“data0”;

9、含有可变形参的函数
如:void foo(parm_list,...);
           void foo(...);

10、允许主函数main没有返回值就可结束。如果程序控制执行到主函数main的最后一个语句都还没有返回,那么编译器会隐式地插入返回0的语句。

11、千万不能返回局部变量的引用。

12、返回引用的函数可以返回一个左值。

13、递归函数必须定义一个终止条件。主函数main不能调用自身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值