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联系密切。
函数指针:
- 函数的地址就是函数名
- 函数指针 int (*a) (int ,int)
- 函数指针组成的数组: int (*a[3]) (int, int)
如果想要获得某一变量的指针,将名用*name代替,如果想转化成数组name[]。
注意。[]的优先级高于*
auto只能适用于单一的变量,不能适用于列表初始化。
函数指针组成的数组的指针定义:
int ps (double); // 函数原型
int (*ps)(double); // 指向函数的指针
int (*ps[3])(double); // 函数指针组成的数组
int (*(*ps[3]))(double); // 指向函数指针组成的数组的指针 经常在类的虚方法中使用
auto和typedef 可以减少上面声明带来的复杂度。