打卡二十三天(全局,局部,静态变量)

全局变量

  1. 作用域:在整个程序中都可见,从其定义的位置开始,直到程序结束。
  2. 存储位置:通常存储在程序的数据段中。
  3. 生命周期:从程序开始运行时创建,直到程序结束时销毁。
  4. 示例:

局部变量

  1. 作用域:局限于定义它的函数或代码块内部。
  2. 存储位置:通常存储在栈上。
  3. 生命周期:在函数或代码块被执行时创建,函数或代码块执行结束时销毁。

注意:局部优先 

 static静态变量

静态变量具有以下特点和用途:

  1. 静态局部变量:
    • 作用域局限于声明它的函数内部。
    • 在函数多次调用之间,其值能够保持。
    • 只会被初始化一次。
  1. 静态全局变量:
    • 作用域限制在声明它的文件内部。
    • 其他文件无法通过外部声明来使用它。

静态变量会保留上一次函数运行完后变量所得到的值 

#include <stdio.h>

int m = 12;

int fun(int x,int y)
{
	static int m = 3;
	m = x * y - m;
	return (m);
}

main()
{
	int a = 7, b = 5;
	m = fun(a, b) / m;
	printf("%d\n", fun(a, b) / m);
}

运行结果:1

以下是对这段 C 语言代码的分析:

首先,定义了全局变量 m 并初始化为 12 。

在 fun 函数中,定义了静态局部变量 m 并初始化为 3 。

第一次调用 fun(a, b) 时,x = 7y = 5,计算 m = 7 * 5 - 3 = 32 ,并返回 32 。

然后,在 main 函数中,执行 m = fun(a, b) / m ,此时全局 m 参与运算,即 m = 32 / 12 ,由于是整数除法,结果为 2 ,此时全局 m 的值被更新为 2 。

最后,再次调用 printf("%d\n", fun(a, b) / m); ,第二次调用 fun(a, b) 时,静态局部变量 m 仍然保持上一次的值 32 ,计算 m = 7 * 5 - 32 = 3 并返回 3 ,然后除以全局 m 的值 2 ,结果为 1 ,所以最终输出 1 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值