第7章 函数——C++的编程模块

1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象。有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回。

2. 在C++中括号为空意味着不指出参数。在ANSI C中,括号为空意味着不指出参数。在C++中,不指定参数列表时应该用省略号。

void say_bye(…);

  1. 3.  数组名数组名解释为其第一个元素的地址有一些例外,首先,对数组名使用sizeof将得到整个数组的长度;其次,将地址运算符用于数组名时,将返回整个数组的地址。

4. 在C++中,当且仅当int *arr和int arr[]用于函数头或函数原型中,它们的含义才是相同的,它们都意味着arr是一个int指针。

5. 用const保护数组:为防止函数无意中修改数组的内容,可在声明形参时使用关键字const, void show_array(const double ar[], int n);

C++将声明const double ar[]解释为const double *ar。

6. 如果数据类型本身并不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const指针。

7. 尽可能使用const,将指针参数声明为指向常量数据的指针有两条理由:首先,可以避免由于无意间修改数据而导致的编程错误;其次,使用const使得函数能够处理const和非const实参,否则将只能接受非const数据。

8. int age = 39;

const int *pt = &age;

pt的声明并不意味着它指向的值就是一个常量,而只是意味着对pt而言,这个值是个产量。换句话说,可以直接通过age变量来修改age的值,但不能使用pt指针来修改它。

9. int data[3][4];

int total = sum(data, 3);

data是一个数组名,数组名是数组第一个元素的地址,该数组有3个元素,每个元素本身是一个数组,由4个int值组成,因此data的类型是指向由4个int组成的数组的指针。

int sum(int (*ar2)[4], int size);

int sum(int ar2[][4], int size);

sum的代码在声明参数ar2时,没有使用const,因为这种技术只能用于指向基本类型的指针,而ar2是指向指针的指针。

10. 函数的地址为存储其机器语言代码的内存的开始地址。

11. auto自动类型推断只能用于单值初始化,而不能用于初始化列表。P245

12. 使用typedef简化复杂的声明。P248

C++ primer plus读书笔记——第7章 函数——C++的编程模块的更多相关文章

  1. C++ primer plus读书笔记——第8章 函数探幽

    第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...

  2. C primer plus 读书笔记第十一章

    本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...

  3. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

  4. C primer plus 读书笔记第五章

    本章的标题是运算符,表达式和语句.主要研究如何处理数据. 示例代码展示了一个使用简单的while循环的代码,难度不大. 下面简单介绍本章的基本概念. 1.基本运算符. 基本运算符有:赋值运算符(C语言 ...

  5. C primer plus 读书笔记第四章

    本章的标题是字符串的格式化输入/输出,重点介绍输入和输出. 本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数. 下 ...

  6. C primer plus 读书笔记第三章

    本章的标题是数据和C,主要内容是介绍数据类型中的整数类型和浮点数类型. 本章的第一段代码 #include <stdio.h> int main(void) { float weight; ...

  7. C++ primer plus读书笔记——第17章 输入、输出和文件

    第17章 输入.输出和文件 1. 对键盘进行输入缓冲可以让用户在将输入传输给程序之前返回并更正.C++程序通常在用户按下回车键时刷新输入缓冲区. 2. 一些I/O类 streambuf类为缓冲区提供了 ...

  8. C++ primer plus读书笔记——第16章 string类和标准模板库

    第16章 string类和标准模板库 1. string容易被忽略的构造函数: string(size_type n, char c)长度为n,每个字母都为c string(const string ...

  9. C++ primer plus读书笔记——第15章 友元、异常和其他

    第15章 友元.异常和其他 1. 友元类的所有方法都可以访问原有类的私有成员和保护成员.另外,也可以做更严格的限制,只将特定的成员函数指定为另一个类的友元.哪些函数.成员函数.或类为友元是由类定义的, ...

随机推荐

  1. PTA 输出数组元素

    7-3 输出数组元素 (15 分)   本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果. 输入格式: 输入的第一行给出正整数n(1).随后一行给出n个整 ...

  2. SpringBoot学习笔记(四)

    本文主要介绍:SpringBoot开发中如何自定义starter 1.什么是starter Starter可以理解为一个可拔插式的插件,提供一系列便利的依赖描述符,您可以获得所需的所有Spring和相 ...

  3. Windows + Jenkins + .NetFramework + SVN 持续部署

    Windows + Jenkins + .NetFramework + SVN 持续部署 环境准备 服务端环境 安装 Windows 服务器 1.阿里云购买临时服务器 阿里云:https://www. ...

  4. IdentityServer4是什么

    1 什么是IdentityServer4? IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架. 2 什么是OAuth 2.0? OAu ...

  5. JS中dom操作的事件

    Click--点击事件 优先级:dom.onclick 高于标签上的onClick属性 监听事件 --不会覆盖前面的事件效果 dom.addEventListener()    括号里面有三个参数 1 ...

  6. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.3 Boost 变换器实例

    2.3 Boost 变换器实例 图2.13(a)所示的Boost变换器器是另一个众所周知的开关模式变换器,其能够产生幅值大于直流输入电压的直流输出电压.图2.13(b)给出了使用MOSFET和二极管的 ...

  7. nacos下载慢吗?来这里

    https://gitee.com/soul_PreCoder/springcloudalibab/repository/archive/master.zip

  8. 面试官问PHP四大主流框架的优缺点,看这篇就够了!

    本篇文章我们来讲讲PHP四大框架的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP框架去完成项目,废话不多说,我们一起来看看吧!! ThinkPHP ThinkPHP(FCS)是一个轻量级的中 ...

  9. Java(215-231)【Object类、常用API】

    1.Object类的toString方法 java.lang.Object 类 Object 是类层次结构的根(父)类. 每个类(Person,Student...)都使用 Object 作为超(父) ...

  10. IDEA下 Scala 安装 使用

    Scala 安装 使用 1.安装Scala插件 Setting--->Plugins--->搜索Scala--->install--->安装完成 或者线上安装不成功/网速太慢, ...