IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言小笔记 -> 正文阅读

[C++知识库]C语言小笔记

函数的递归调用:函数调用其本身,或者其子函数还调用此函数,那么称为函数的递归调用。

int fac( int n );
int main( void )
{
	int m = 0;
	printf( "请输入m的值:" );
    scanf( "%d",&m );
    printf( "%d\n",fac(m) );
    return 0; 
}

//函数的功能:求n的阶乘
int fac( int n )
{
	if( n < 1 )//形参的异常检查
		return -1//返回异常值
	else if( n==1 )
		return 1;
	else 
		return n*fac(n-1)
}

在这里插入图片描述

作用域
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

在同一个作用域不能出现相同的标识符,同一个作用域内,不能重复定义变量名

文件作用域:从文件头到文件尾的代码空间。

函数作用域:函数的参数和函数体属于函数作用域,函数的返回值和函数名属于文件作用域。

语句块作用域:

结构体作用域:

存储类别:存储类别解决的是标识符”生命周期“或者变量内存的开辟时间和销毁时间;学习存储类别时不要去考虑作用域,俩者没有关系

栈变量:auto声明的变量。
变量内存开辟时间:栈变量是在执行到变量定义语句时开辟内存。
变量内存销毁时间:所在作用域结束后销毁。

在这里插入图片描述
栈变量:
在这里插入图片描述
注意,虽然foo(20)调用时重新开辟内存块,但是和之前的开辟内存是不一样的;

自动变量存储在堆栈
静态变量存储在静态内存
所有的全局变量都是静态变量
所有的局部变量默认是自动变量,栈变量
被关键字static修饰的局部变量也是静态变量

全局区变量:用static声明的变量
注意形式参数不能声明为static,只能声明为auto;变量声明为static时,不赋初值默认为0;
全局标识符如果用static修饰,并不是表示在全局区而是表示该标识符只能在本文件内被扩展使用
变量内存开辟时间:编译时
变量内存销毁时间:主函数结束时

在这里插入图片描述
结果:2 2

结果:2 3
上图里cb内存开辟时间和销毁内存时间一样。

example:有俩个.c文件,一个是fun.c,另一个是main.c

#include <stdio.h>

int max = 0;
void fac( void ){
	max = 20;
	printf("*****");
}
#include <stdio.h>
extern void fac(void);//函数声明,扩展作用域,把fac函数从fun.c扩展到了这里;只是大多数时候,我们写声明的时候没有写extern
extern int max;//把变量max的作用域从fun.c扩展到了这里 注意这里不能用int max,因为俩个.c文件都全局变量的话会产生冲突
extern int c;//扩展作用域
void fun( int a );
int main(void)
{
	fac();
	max = 100; 
	return 0;
}

int c = 10;//全局变量
void fun( int a )//局部变量
{
	static int b;//局部变量
}
 

全局标识符如果用static修饰,并不是表示在全局区而是表示该标识符只能在本文件内被扩展使用。意思是如果fun.c里的函数改为,**static void fac(void)**则报运行错误,因为fac加了static之后只能在fun.c中使用,不能再扩展到其他文件中使用,当然static int max的话也是一样的道理

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:03:37  更:2021-08-09 10:03:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 18:05:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码