☀️光天化日学C语言☀️(35)- 局部变量和全局变量
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了☀️光天化日学C语言☀️(35)- 局部变量和全局变量相关的知识,希望对你有一定的参考价值。
文章目录
一、前言
本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
这一章的主要内容是函数。
二、人物简介
- 第一位登场的就是今后会一直教我们C语言的老师 —— 光天。
- 第二位登场的则是今后会和大家一起学习C语言的没什么资质的小白程序猿 —— 化日。
三、作用域
所谓作用域,就是变量能够有效作用的范围。
四、局部变量
1、局部变量的定义
局部变量(Local Variable),即定义在函数内部的变量,它的作用域仅限于该函数内部,离开函数即无效。例如:
#include <stdio.h>
int Power(int x) {
int y = x * x; // (1)
return y;
}
int main() {
int z;
z = Power(6); // (2)
printf("%d\\n", z);
return 0;
}
-
(
1
)
(1)
(1)
y
y
y 作为
Power(int x)
函数的局部变量,只在Power(int x)
函数内部有效; -
(
2
)
(2)
(2)
z
z
z 作为
main()
函数的局部变量,只在main()
函数内部有效,
从上面这段代码中,我们看到Power(int x)
这个函数,其实是有两个局部变量的,一个是函数的形参
x
x
x,一个是函数内部定义的变量
y
y
y,如果在main()
函数中用了
y
y
y,就会报编译错误。
2、不同函数中的同名局部变量
当两个函数中定义了同名的局部变量,它们之间是毫无关系的,简单的认为,它们是存储在不同的内存空间,仅仅名字相同而已,例如:
#include <stdio.h>
int Power(int x) {
int y = x * x; // (1)
return y;
}
int main() {
int y;
y = Power(6); // (2)
printf("%d\\n", y);
return 0;
}
- ( 1 ) (1) (1) 和 ( 2 ) (2) (2) 的 y y y 不同,修改任何一个,另一个都不会改变。
3、不同语句块中的同名局部变量
在同一个函数中,是否允许定义同名变量呢?
答案是肯定的,我们可以将这两个变量定义在不同的语句块中,这样就实现了同一个函数定义同名局部变量的需求,例如:
#include <stdio.h>
int main() {
{
int y = 1;
printf("%d\\n", y);
}
{
int y = 2;
printf("%d\\n", y);
}
return 0;
}
- 其中
{}
中的内容,代表了一个语句块。这里的两个 y y y 是两个不同的变量。
五、全局变量
1、全局变量的定义
全局变量(Global Variable),即定义在所有函数(包括main
函数)外部的变量,它的作用域默认是整个程序。例如:
#include <stdio.h>
int X = 0;
int getGlobalX() {
return X;
}
int main() {
++X;
printf("%d\\n", X);
return 0;
}
这个程序中,程序的输出为 1,
X
X
X 作为全局变量,可以给getGlobalX()
和main()
这两个函数使用,值的改变会影响全局。
2、全局变量的定义位置
虽然全局变量可以定义在函数外部,但是C语言代码的执行顺序是从上到下的, X X X 这个全局变量的定义必须在使用它的函数之前,如下这个例子就不会通过编译。
#include <stdio.h>
int getGlobalX() {
return X; // (1)
}
int X = 0;
int main() {
printf("%d\\n", getGlobalX());
return 0;
}
- ( 1 ) (1) (1) 由于 X X X 的定义在使用之后,程序识别这个时候是没有 X X X 这个变量,所以这里会产生编译错误。
六、全局变量和局部变量的应用
1、就近原则
就近原则指的是:当代码中定义了相同名字的全局变量和局部变量时,在局部范围内,全局变量是会被屏蔽的,也就是以局部变量优先。
#include <stdio.h>
int X = 1;
void PrintX() {
int X = 2;
printf("%d\\n", X);
}
int main() {
PrintX();
return 0;
}
- 如上代码所示,
PrintX
函数内部打印的变量X
是函数内部的局部变量,而不是外部的全局变量。
通过这一章,我们学会了:
1)局部变量;
2)全局变量;
- 希望对你有帮助哦 ~ 祝大家早日成为 C 语言大神!
课后习题
- 【第01题】A + B | 四种输入方式,开启刷题的序章
- 【第02题】给定 n,求 1 + 2 + 3 + … + n 的和 | 四种解法
- 【第13题】给定三个数 a,b,c,从小到大输出这三个数 | 最原始的排序算法思想
🔥让天下没有难学的算法🔥
C语言免费动漫教程,和我一起打卡! 🌞《光天化日学C语言》🌞
入门级C语言真题汇总 🧡《C语言入门100例》🧡
几张动图学会一种数据结构 🌳《画解数据结构》🌳
组团学习,抱团生长 🌌《算法入门指引》🌌
竞赛选手金典图文教程 💜《夜深人静写算法》💜
以上是关于☀️光天化日学C语言☀️(35)- 局部变量和全局变量的主要内容,如果未能解决你的问题,请参考以下文章
☀️光天化日学C语言☀️(34)- 函数进阶 | 面向过程编程
☀️光天化日学C语言☀️(33)- 函数入门 | 开启下一个篇章!
☀️光天化日学C语言☀️(32)- continue 关键字 | 下一个!
☀️光天化日学C语言☀️(29)- while 语句 | 死循环啦!