C++PRIMER第一轮复习第六章

6.1

调用运算符。函数的返回类型不能是数组类型或者函数类型,但是可以是指向数组或函数的指针。生命周期。局部变量(形参与函数体内部定义的变量)。自动对象。局部静态对象(生命周期贯穿函数),局部静态变量默认初始化为0。

函数声明也叫函数原型,函数声明不包含函数体,所以也就无需形参的名字。事实上,函数声明经常省略形参的名字。

C++支持分离式编译,分离式编译允许我们把程序分割到几个文件中去,每个文件独立编译。

$$ CC factmain.cc fact.cc #generate factmain.exe or a.out
$$ CC factmain.cc fact.cc -o main #generate main or main.exe

分离式编译提供了分离式编译每个文件的机制,这一过程通常会产生一个后缀名是.obj(windows)或.o(linux)的文件,后缀名的含义是该文件包含对象代码(object code).

6.2

形参的类型决定了形参与实参交互的方式。如果形参是引用类型,它将绑定到对应的实参上(实参被引用调用,传引用调用),否则将实参的值传递拷贝后赋值给形参(被值传递,传值调用)。使用引用避免拷贝,还可以返回额外信息。

用实参初始化形参会忽略顶层const。当形参有顶层const时,传给它常量或者非常量对象都是可以的。我们可以用非常量初始化底层const,但是不可以反过来。尽量使用常量引用。

用函数传递数组时,实际上传递的是数组首元素的指针:

void print(const int*);
void print(const int[]);
void print(const int[10]);//这里的维度表示我们期望数组含有的元素个数,实际上不一定。
int i=0,j[2]={1,2};
print(&i);
print(j);
一开始函数并不知道数组的确切尺寸,调用者应该提供额外的信息。管理指针形参有三种常用的技术。1.对于C风格字符串,函数遇到空字符时停止:
void print(const char *cp)
{
     if (cp)//cp不是空指针
       while(*cp)//cp内容不是空字符
             cout<<*cp++;//++优先级高于*
}
2.使用标准库规范,传递指向数组首元素和尾后元素的指针:
void print(const int *beg, const int *end)
{
   while(beg!=end)
       cout<<*beg++<<endl;
}
3.显示传递一个表示数组大小的形参:
void print(const int a[], size_t size)
可以有如下的调用方法3的函数:
print(j,end(j)-begin(j));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值