C++ primer之第六章(函数1)

知识点:
    1. 函数是一个命名了的代码块,我们通过调用函数执行相应的代码块。
    2.局部静态对象:在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即时对象所在的函数被销毁也不会对其有影响。
    3. 内置的局部对象不默认初始化显示为未定义,内置类型的局部静态变量,全局变量,函数外的变量,一般初始化0。
    4.分离式编译:C++语言支持我们把程序分割到几个文件中去,每个文件独立编译。
    5.如果函数无须改变引用形参的值,最好将其声明为常量引用。
习题:
    6.1 答:形参->在函数参数列表中声明的局部变量。 它们由每个函数调用中提供的参数初始化。
         实参:在函数调用中提供的用于初始化函数参数的值。
    6.2 答:(a) s是string类型,函数返回是int类型 。(b) 函数没有返回类型 。 (c) 两个v1而且语句块{} 不完整。 (d)缺少{}
    6.3 答:每一章的练习都在采用函数调用,这里不再编写。
    6.6 答:形参是函数局部变量,进入函数时,主调函数给其初始化,局部变量一般是指函数内部自行定义的变量,存储在栈上。局部静态变量是指不会随着函数的执行完毕而销毁的变量,存储在静态区。
    6.13 答:第一个是值传递函数,对形参的操作不会影响实参,第二个是引用传递,对形参的操作就是对实参的操作。
    6.14 答: 形参是否是引用类型应该根据是否需要修改对应实参的值来看,如果需要修改,则应是引用类型。
    6.15 答:s是常量引用是因为不能s是原字符串,在函数中不能被改变,occurs要自增所以是普通引用。c可以是引用类型但要考虑效率。s可能会被改变,无法测出真实'c'字符串的个数。 occurs不能被改变,将无法自增。
程序题:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//计算阶乘, 也可以选用递归
void fun6_04()
{
     cout<< "请输入数字: " ;
      int num,mu = 1;
     cin>>num;
      for ( int i=1; i<=num; ++i)
     {
           mu *= i;
     }
     cout<<endl<<mu;;
}
//采用递归计算
int fun6_04( int n)
{
      if (n ==1 || n==0 )
            return 1;
      return n * fun6_04(n-1);
}
//输出实参的绝对值
void fun6_05()
{
     cout<< "请输入数字:" ;
      int num;
     cin>>num;
      if (num>0)
           cout<<endl<<num;
      else
           cout<<endl<<(-num);
}
int & fun6_07(string str)
{
     cout<<str<<endl;
      static int n = 0;
     ++n;
      int num = 10;
     cout<<num<<endl;
      return n;
}
//采用指针交换两个数字
void fun6_10( int *a, int *b)
{
      int tmp;
     tmp = *a;
     *a =  *b;
     *b = tmp;
}
  void fun6_11( int &n)
 {
     n = 20;
 }
  //使用引用交换数据
  void fun6_12( int &n, int &m)
 {
      int   temp = m;
     m = n;
     n = temp;
 }
int main()
{
      //fun6_04();
      //cout<< fun6_04(5);
      //fun6_05();
      //cout<<fun6_07("结合6_06");
      int a=10,b=20;
      //fun6_10(&a,&b);
      //cout<<a<<b;
      //fun6_11(a);
      //cout<<a;
      //fun6_12(a,b);
      //cout<<a<<'\t'<<b;
      return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值