1. C++的返回值类型不能是数组
  2. 函数原型中的变量名相当于点位符,因此不要求提供变量名。
    void cheers(int);
  3. C++中不指定参数列表时就使用活力号:
    void saybye(...);

    通常,仅当与接受可变参数的C函数(如printf())交互时才需要这样做。

  4. 静态类型检查:在编译阶段进行的原型化。
  5. 函数调用时将参量(实参)传递给参数(形参,函数定义中 用于接收参数而声明的变量)。
  6. cin>>输入时跳过前面的空格和换行符。
  7. 当且仅当用于函数头或函数原型中时,int arr[] 和 int *arr 才相同,都表示指针。
  8. 要传递数组类型 和 元素数量时,要分成两个参数来传递,而不能用方括号直接传:
    void fillArray( int arr[], int size);

    而不要使用下面的方法:

    void fillArray(int arr[size]);
  9. 除了传递数组长度size以外,还可以传递两个指针来标示区间,第一个为指向第0元素,第二个指向最后一个元素的后面。
  10. 在声明或定义中用const标记形参数组时,表示不能在函数中使用该形参修改数组,而不代表原始数组的const与否。C++声明中const double ar[] 表示const double *ar.
    void fillArray(const int arr[], int);

    void fillArray(const int *arr, int)

    此时,const类型的地址只能赋给const指针。

  11. 当把形参的指针定义为const时,只能防止修改指针指向的值,不能防止修改指针的值:int *const pt 定义了不可修改地址的指针:
    int age = ;
    const int *pt = &age;//不能用pt修改age的值
    int *const pt = &age;//可以用pt修改age的值,但pt只能指向age
    const int *const pt = &age;//pt只能指向age,且不能用pt修改age的值
  12. 注意:只能在指针指向基本类型时(如数组),才可以使用const限定符,当它们是指针或指向指针的指针时,则不能使用const。比如下面的二维数组,表示的就是指针。
  13. 调用函数传递二维数组:
    1. 二维数组的数组名本身是指针,表示的是指向指针(列)的指针

      int sum(int (*arr) [], int size);//arr指针指向另一个指针(指向长度为4的int数组的指针)

      必须加括号,否则就成了长度为4的数组(数组里装的是指针),如下:

      int *arr [];//表示长度为4的指针数组

      也可以这样声明:

      int sum( int arr[][], int size);
    2. 在声明参数arr时,没有使用const,因为这种技术只能用于指向基本类型的指针,而arr是指向指针的指针。
  14. 不以空值字符结尾的char数组只是数组,而不是字符串。
  15. 结构可以直接像普通变量那样直接按值传递。但如果结构非常大时,可以按引用传递 或  传递结构的地址。
  16. while(cin >> x >> y)
    {
    ...
    }
  17. 函数指针
    1. 函数名表示的是函数的地址:假设think是一个函数,process调用think:

      process(think);
    2. 函数指针的声明如下:
      double pam(int);//函数声明
      double (*pf) (int);//函数指针的声明

      需要带括号, 而不能用下面的:

      double *pf (int);//声明了一个返回值为double指针的函数
    3. 此时(*pf)和pam是相同的。

学习C++.Primer.Plus 7 函数的更多相关文章

  1. 学习C++.Primer.Plus 8 函数探幽

    1. 内联函数 普通函数调用: 存储调用指令的地址->将函数参数复制到堆栈->跳到函数地址执行代码(返回值放到寄存器)->跳回调用指令处 2.  当代码执行时间很短,且会被大量调用的 ...

  2. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  3. 学习之"setjmp和longjmp函数"

    Linux学习之"setjmp和longjmp函数"   转贴,原文地址:http://www.cnblogs.com/lq0729/archive/2011/10/23/2222 ...

  4. Lua和C++交互 学习记录之六:全局函数交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  5. Hadoop源码学习笔记(2) ——进入main函数打印包信息

    Hadoop源码学习笔记(2) ——进入main函数打印包信息 找到了main函数,也建立了快速启动的方法,然后我们就进去看一看. 进入NameNode和DataNode的主函数后,发现形式差不多: ...

  6. 学习LoadRunner之C语言函数

    学习LoadRunner之C语言函数 Action() { /*strchr和strrchr的区别*/ /* char *strTest1="citms citms"; char ...

  7. Python学习,第八课 - 函数

    本次讲解函数,由于内容比较多,小编列了个大纲,主要有一下内容: 1. 函数基本语法及特性 2. 函数参数 3.局部变量 4. 返回值 5.嵌套函数 6.递归 7.匿名函数 8.高阶函数 9.内置函数 ...

  8. C Primer Plus学习笔记(八)- 函数

    函数简介 函数(function)是完成特定任务的独立程序代码单元 使用函数可以省去编写重复代码的苦差,函数能让程序更加模块化,提高程序代码的可读性,更方便后期修改.完善 #include <s ...

  9. 学习C++ Primer 的个人理解(一)

    <C++ Primer>这本书可以说是公认的学习C++最好的书,但我觉得不是特别适合作为教材,书中内容的顺序让人有些蛋疼.我个人认为初学此书是不能跳着看的.如果急于上手的话,我更推荐< ...

随机推荐

  1. HTML5 画布canvas元素

    HTML5的canvas元素以及随其而来的编程接口Canvas API应用前景极为广泛.简单地说,canvas元素能够在网页中创建一块矩形区域,这块矩形区域可以成为画布,这其中可以绘制各种图形.可别小 ...

  2. selenium+python测试

    pip install selenium, 得有图形界面, 这里简单的先演示一个打开浏览器,输入网址的demo,以百度为例 # encoding = utf-8 from selenium impor ...

  3. Java Gradle入门指南之内建与定制任务类(buildSrc、Groovy等)

        上一篇随笔介绍了Gradle的安装与任务管理,这篇着重介绍Gradle的内建任务(in-built tasks)与自定义任务(custom tasks),借助Gradle提供的众多内建任务类型 ...

  4. u盘安装CENTOS后,启动missing operating system ,只能用U盘才能启动系统

    好久之前就想把家里闲置的那台老的不能再老的笔记本换成linux的,用来学习 从N久之前用光盘安装的时候发现光驱坏掉了之后就没有再装过,最近又想安装于是就试了U盘安装 U盘安装过程也很简单,只需要制作一 ...

  5. Linux 执行partprobe命令时遇到Unable to open /dev/sr0 read-write (Read-only file system)

    在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息"Warning: Unable to open ...

  6. ORACLE查看数据文件包含哪些对象

    在上篇ORACLE查看表空间对象中,我介绍了如何查询一个表空间有那些数据库对象,那么我们是否可以查看某个数据文件包含那些数据库对象呢?如下所示 SELECT  E.SEGMENT_TYPE       ...

  7. js实现页面跳转的几种方式

    第一种:    <script language="javascript" type="text/javascript">           wi ...

  8. ubuntu下apache2 安装 配置 卸载 CGI设置 SSL设置

    一.安装.卸载apache2      apache2可直接用命令安装           sudo apt-get install apache2      卸载比较麻烦,必须卸干净,否则会影响ap ...

  9. linux 源码安装mysql 5.5

         今天在ubuntu和CentOS下,用源码反复安装了许多次mysql,趁还没忘记,赶紧记下来...      在ubuntu和CentOS下安装过程倒是没什么差别.      0.下载源码, ...

  10. Java报表工具FineReport常见的数据集报错错误代码和解释

    在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释 ...