既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
形参和实参
实参是形参的初始值。第一个实参初始化第一个形参,第二个实参初始化第二个形参,以此类推。实参与形参存在对应关系,但是并没有规定实参的求值顺序,编译器能以任意可行的顺序对实参求值。
但是实参的类型必须与对应的形参类型匹配,函数有几个形参,我们就必须提供相同数量的实参。
如下面的 fact函数,此函数只有一个int类型的形参,所以每次我们调用它的时候都必须提供一个能转换成int的实参
fact ("hello"); //错误:实参类型不正确fact (); //错误:实参数量不足fact (42, 10, 0); //错误:实参数量过多fact (3.14); //正确:该实参能转换成int类型
函数的形参列表
函数的形参列表有以下特点
-
函数的形参列表可以为空
-
任意两个形参都不能同名,而且函数最外层作用域中的局部变量也不能使用与函数形参一样的名字。
-
形参名是可选的,但是由于我们无法使用未命名的形参,所以形参一般都应该有个名字。偶尔,函数确实有个别形参不会被用到,则此类形参通常不命名以表示在函数体内不会使用它。但是即便某个形参不被函数使用,也必须为它提供一个实参。
函数返回类型
大多数类型都能用作函数的返回类型。一种特殊的返回类型是void,它表示函数不返回任何值。
但是函数的返回类型不能是数组类型或函数类型,但可以是指向数组或函数的指针。
在C++语言中,名字有作用域,对象有生命周期,理解这两个概念非常重要。
1. 名字的作用域是程序文本的一部分,名字在其中可见。
2. 对象的生命周期是程序执行过程中该对象存在的一段时间。
如我们所知,函数体是一个语句块。块构成一个新的作用域,我们可以在其中定量。形参和函数体内部定义的变量统称为局部变量。它们对函数而言是"局部”的,仅在函数的作用域内可见,同时局部变量还会隐藏在外层作用域中同名的其他所有声明中。
自动对象
对于普通局部变量对应的对象来说,当函数的控制路径经过变量定义语句时创建该对象,当到达定义所在的块末尾时销毁它。我们把只存在于块执行期间的对象称为自动对象(automatic object)。当块的执行结束后,块中创建的自动对象的值就变成未定义的了。形参就是一种自动对象。
局部静态对象
某些时候,我们需要局部变量的生命周期贯穿函数调用及之后的时间。可以将局部变量定义成static类型从而获得这样的对象。局部静态对象(local static object)在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止方被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响。
举个例子,说明局部静态对象的作用
size t count_calls (){ static size_t ctr =0; //调用结束后,这个值仍然有效 return ++ctr;}使用此函数:int main(){ for (sizeti =0; i!= 10; ++i) { cout << count _calls() << endl;return 0; }}
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
pics/618668825)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!