如何用clion建立新文件 ○ 这样处理便于分别编写,分别编译,进而提高调试效率(复试有用)。 ● 如果把定义放在main函数之后,那要在前面进行函数声明。先声明,后调用,才是规范。不要隐式声明! ● 递归的核心是找公式。 ● 记得编写结束条件!! ● 函数中指定的形参,如果没有函数调用,那么它们并不占用内存的存储单元。 ○ 实参与形参的个数要相等,类型应该匹配,且形参和实参要按顺序一对一传递数据。 ● 6.形参相当于局部变量,因此函数内不能再定义局部变量与形参同名... ● 局部变量只在离自己最近的大括号内有效! ○ for循环括号内定义的变量,循环体外不可用。 ● 全局变量放在”数据段“中。main中定义的i是放在main函数栈中。 ○ 外部变量可以为本文件中的其他函数所共用,它的有效范围是从定义变量的位置开始到本源文件结束。所以也称为全程变量。 ● 全程变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。 ### 408函数-递归调用-全局变量和局部变量 #### 一、CLion环境下新建文件及函数管理 在CLion环境下新建文件,尤其是C/C++源文件,对于项目的组织和代码的管理非常关键。为了提高编程效率和调试效果,我们需要遵循良好的编码习惯。例如,在一个项目中新建C/C++源文件时,可以通过右键点击项目名称选择“新建”->“C/C++源文件”。此外,还需要注意以下几点: - **添加到目标**:在新建文件时,确保勾选“add to targets”,这样新建的源文件会与`main.c`一同编译。 - **外部拖入文件**:如果文件是从项目外部拖入的,则需要手动将其添加到编译目标中。 - **头文件管理**:新建头文件时,CLion会自动生成必要的框架,方便后续的函数声明和包含操作。 #### 二、函数的声明与定义 1. **函数声明与定义分离**:对于较大的程序来说,通常会将不同的功能模块放在不同的源文件中。这样便于分别编写和编译,进而提高调试效率。例如,可以在`func.c`中定义函数,在`func.h`中声明这些函数。 2. **函数声明的重要性**:如果在`main`函数之后定义了某个函数,那么在该函数被调用之前,必须先进行函数声明。这样可以避免编译器发出关于隐式声明的警告。在C99标准中,未声明的函数调用被认为是无效的。 3. **函数调用机制**:程序的执行始于`main`函数。当`main`函数中调用了其他函数时,执行流程会转移到被调用的函数上,然后在函数执行完毕后返回`main`函数,最终程序在`main`函数中结束运行。 4. **函数的独立性**:所有的函数在定义时是相互独立的,函数之间不能嵌套定义。函数之间可以通过相互调用来协作完成任务,但不能直接调用`main`函数,因为`main`函数是由操作系统直接调用的。 #### 三、形参与实参 1. **参数对应关系**:在函数调用时,实参与形参之间需要一一对应,包括数量、类型和顺序。 2. **形参的作用域**:形参本质上是局部变量,其作用域仅限于函数内部。如果函数没有被调用,则形参不会占用内存空间。 3. **形参与局部变量**:为了避免混淆,不应在同一函数中定义与形参同名的局部变量。这样做可能会导致难以预料的结果。 #### 四、递归调用 递归是一种重要的编程技术,它允许函数直接或间接地调用自身。递归的核心在于找出递归公式,并且必须编写明确的结束条件,以防止无限递归的发生。例如,计算阶乘的递归函数就需要设定一个基础情况(通常是`n = 0`或`n = 1`),并在每次递归调用时逐步接近这个基础情况。 #### 五、变量的作用域与生存周期 1. **局部变量与作用域**:局部变量的作用域仅限于定义它的函数或复合语句。例如,在`for`循环中定义的变量,在循环结束后就不再可用。 2. **全局变量的作用域**:全局变量的作用范围从定义位置开始直到源文件结束。这意味着在一个源文件中定义的全局变量可以被该文件内的其他函数所共享。全局变量在整个程序执行期间都占用内存空间,即便在某些时刻并未使用。 3. **全局变量与局部变量的区别**:全局变量存放在数据段中,而局部变量则位于栈中。局部变量在函数调用结束时会被释放,而全局变量在整个程序运行期间都占用固定的存储空间。 总结而言,了解并掌握函数的声明与定义、形参与实参的对应规则、递归调用的实现方式以及变量的作用域和生存周期等内容对于高效编程至关重要。这些基础知识不仅有助于提升代码质量和可维护性,还能帮助开发者更好地理解和解决复杂问题。
- 粉丝: 179
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助