C++ Primer Plus 第7章 总结

c++自带ANSI函数库。

函数当中的using namespace std;或using std::cout;要每一个函数都有。(最好不要写在函数外面)

void无返回值得函数,尽量也要写上return;

c++不允许返回数组。

c++的函数返回值:

  • 流程:首先被调用函数将返回值放在CPU的寄存器或内存中,然后,调用函数从此处取走返回值。
  • 函数原型告诉调用函数返回什么类型
  • 函数定义告诉函数应该返回什么类型
  • 有多个return时,以第一个遇到的return为准

函数原型:其中的参数名是占位符,没有意义。

为什么需要函数原型?

  • 提高效率
  • 避免函数定义不在文件中无法找到
  • 函数原型可以告诉编译器进行哪些检查

c++中void function(...)代表参数列表不指定。

在编译的过程当中进行的编译器的类型检测:静态类型检查

函数的强制转换:针对参数和返回值,但是只有当有意义的时候才进行。

  • 针对函数重载的二义性
  • 针对整形转化成指针或结构
  • 对于大转小过程(可能是警告)

形参(参量):接收变量 实参(参数):传递的值

自动存储的变量:自动变量,局部变量。

程序中的连乘然后连除:要注意中间值是否会超出类型存储的极限。

在函数中使用数组:

int a[3];
void function(int arr[], int num);   // 只有此时int arr[] 和 int *arr相同,其中的arr是指针
sizeof(arr)大小是4

数组传递给函数:

  • 传递地址,长度,类型
  • 传递begin地址和超尾地址(STL标准库中使用这种方法)

指针之间的减法:结果是其中的数据个数。

符号变量可以给其他变量赋值。符号变量的地址只能给指向const变量的指针。

const与非const的交叉只允许一种形式:即将非const变量的地址赋给指向const变量的指针。const 只允许作用于单层的指针 0。

在程序中要记得使用const来避免错误的修改过程。

const int * a ;a是指向const变量的指针。其内部数据不能修改。

int * const a; 是指针不能修改。

c++中角度使用弧度制。atan2() 求arctan()   sqrt 求根号

在进行多个数字输入的过程中停止输入的方式:

  • 输入一个不能出现的值
  • 输入一个字母(此时,输入会停止下次输入的时候要保证可以继续输入)

cout << "hello";  类运算符实际是调用一个函数来实现输出。

array对象(可以使用对象传递,指针传递,引用传递) 与结构很相似

#include<array>
using namespace std;
array<int,4> a;   // 其中的int可以是对象

递归操作:对于可以分而治之的过程,使用递归。递归操作通常和if联系密切。

函数指针

  1. 函数的地址就是函数名
  2. 函数指针 int (*a) (int ,int)
  3. 函数指针组成的数组: int (*a[3]) (int, int)

如果想要获得某一变量的指针,将名用*name代替,如果想转化成数组name[]。

注意。[]的优先级高于*

auto只能适用于单一的变量,不能适用于列表初始化。

函数指针组成的数组的指针定义:

int ps (double);  // 函数原型
int (*ps)(double); // 指向函数的指针
int (*ps[3])(double); // 函数指针组成的数组
int (*(*ps[3]))(double); // 指向函数指针组成的数组的指针  经常在类的虚方法中使用

auto和typedef 可以减少上面声明带来的复杂度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值