返回类型
使用指针像python一样返回一个函数或者数组,但C++函数的返回类型不能直接是数组或者函数。
自动对象
只存在于块执行期间的对象成为自动对象
局部静态对象
size_t count_calls(){
static size_t ctr =0 ; //局部静态对象
return ++ctr;
}
for(int i =0;i!=10;i++)count_calls();
函数声明
函数和变量的声明在头文件中进行,定义在源文件中写。
参数传递
参数传递分引用传递和值传递
值传递在函数中修改参数值,不会影响初始值,对引用参数做修改,则会影响被引用对象的初始值。
void reset(int &i){
i=0;
}
int j =42;
reset(j); //j的值被改成0
使用引用可以避免拷贝要使用的对象。
数组形参
void print(const int*);
void print(const int[]);
void print(const int[10]);
- 多维数组形参
方式一
bool PrintMatrix(int(*matrix)[N][K], int m, int n,int k)
{
return true;
}
方式二
bool PrintMatrix(int matrix[M][N], int m, int n)
{
return true;
}
方式三
bool PrintMatrix(int matrix[][N], int m, int n)
{
return true;
}
- 数量可变参数
initializer_list<T> lst;
//默认初始化;T类型元素的空列表
initializer_list<T> lst{a,b,c...};
//lst的元素数量和初始值一样多;lst的元素是对应初始值的副本
lst2(lst)
lst2=lst
//拷贝或赋值一个initializer_list对象不会拷贝列表中的元素;拷贝后,原始列表和副本元素共享
lst.size() //列表中的元素数量
lst.begin() //返回指向lst中首元素的指针
lst.end() //返回指向lst中尾元素下一位置的指针
- 参数默认值
string screen(int ht=20,int wid=80,string name=" ");
screen(10,20,"123");
screen(10,20); //使用默认值时只能省略末尾尾部实参
函数返回值
- 没有明显return,用于void返回值函数,编译器添加return 0