🐰作者简介:一位普通高校的在校学生,致力于提高自己的编程能力。
🍌个人主页:比昨天强一點的博客_CSDN博客-C语言从0到精通领域博主
🍍系列专栏:C语言从0到精通_比昨天强一點的博客-CSDN博客
🏷️学习格言:无人问津的日子,最是提高自己的好时机。

本章目的:希望你能通过这篇文章练就火眼金睛,掌控变量的方方面面。
变量是程序猿
自己命名的,用来保存数据的一个载体(准确的说应该是用来寻找数据的标识符)。
在我们编写程序时,常常有数据需要被处理,而变量就是为了能够将数据保存起来,以便后续处理时拿出来使用。
定义变量,本质上就是为变量在内存中开辟空间,换言之,同一变量的定义只能进行一次。举个栗子🌰:你想定义一个变量来记录你放了几只羊

我要有这些羊,我还码个屁代码
- #include
-
- int mian(){
-
- int a; //这就是定义变量
-
- return 0;
-
- }
但是在这里我要讲的是,上面的做法并不推荐。

接下来,讲讲上述代码有哪些问题
- 在定义变量时,变量名要有意义,能见名知意。所以上述定义时,应该将a 改为 sheepNum
- 你以为这就完了?
。强烈要求,变量在定义时要初始化,也就是要给一个值。
因为如果不初始化,变量将会是随机值,在vs中不初始化直接打印输出,编译器会报错,在linux中是随机值(或者说是默认值)。

所以对上述代码进行修改。如下:
- #include
-
- int main(){
-
- int sheepNum = 0;
-
- return 0;
-
- }
关于更多的变量命名规则,我会总结在文章末尾,各位看官可自行参考。
全局变量是可以跨文件访问的,所以声明针对全局变量。
首先我们举个栗子🌰:
- mian.c文件中
- #include
-
-
- int num = 0; //代码块外定义的变量就是全局变量
-
- int main(){
-
- return 0;
-
- }
-
- test.c文件中
-
- #include
-
-
- extern int num;//这就是声明,只有进行声明才可以使用
- int num; //这种其实编译运行也没问题,但是建议带上extern,因为不带让人不清楚是定义还是声明,这不是一个好习惯。
- extern int g_val = 100;//这是错误的写法,所有变量声明的时候不能设置初始值。
-
- int main(){
-
- num = 10; //如果要在同一个工程下的不同文件使用此全局变量,则需要进行声明。如上
- return 0;
-
- }
作用域的概念:该变量的有效区域
生命周期的概念:指的是该变量从定义到被释放的时间范围,所谓的释放,指的是曾经开辟的空间“被释放”。
变量的使用遵循局部优先
举几个栗子🌰:
- #include
-
- int num = 10;
-
- int mian(){
-
- int num = 1;
-
- printf("%d\n",num);//输出的是1,当局部变量和全局变量同名时(允许,但不推荐),采用局部优先原则。
- return 0;
-
- }
- #include
-
- int mian(){
-
- for(int i = 0; i < 10; ++i){
-
- printf("%d\n",i); //没问题
-
- if(1){
- int j = 0;//j定义在代码块内,只能在此有作用。
-
- }
-
- printf("%d\n",j);//报错
- }
-
- printf("%d\n",j);//报错,j只在if内部有效
- printf("%d\n",i); //这里会报错,因为如此定义i,i的作用域只在循环体内。
-
- return 0;
- }

以上就是对变量的初步详解,如果对你有用,就留个小红星吧,这对我帮助很大。谢谢🙏