函数(一)

返回类型

使用指针像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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 函数基础 函数调用完成两项工作:一是实参初始化函数对应的形参,二是将控制权转移给被调用函数。此时主调函数的执行被暂...
    TOMOCAT阅读 427评论 0 1
  • #1.函数基础1.1 局部对象1.2 函数声明1.3 分离式编译 #2.参数传递2.1 传值参数2.2 传引用参数...
    MrDecoder阅读 665评论 0 1
  • 函数是一个命了名的代码块,我们通过调用函数执行相应的代码。函数可以有零个或者多个参数,而且(通常)会产生一个结果。...
    丶不霁何虹阅读 1,234评论 0 1
  • 本文章分为知识点、例子和心得,交流群728483370,一起学习加油! 3.函数重载 3.1非成员函数重载 3.2...
    程序爱好者阅读 613评论 0 0
  • 0.一些有用的概念 <0>: 自动对象:对于普通局部变量对应的对象而言,当函数的控制路径经过该变量定义语句时创建该...
    BrightHewei阅读 287评论 0 1

友情链接更多精彩内容