首页 > 其他分享 >重学C语言——变量及其生命周期

重学C语言——变量及其生命周期

时间:2023-11-06 23:32:58浏览次数:39  
标签:生命周期 变量 int age 局部变量 C语言 include printf 全局变量

上一篇blog中,我们写了两个程序,一起来回顾一下~

#include<stdio.h>

int main()

{

	int a=10;

	printf("%d\n",a);

	return 0;

}

在这个程序中,我们定义了一个名为a的变量,并申请了4个字节的内存空间,用来存放10这个整数。

#include<stdio.h>

int main()

{

	char a='h';

	printf("%c\n",a);

	return 0;

}

在这个程序中,我们定义了一个名为a的变量,并申请了1个字节的内存空间,用来存放h这个字符。

那么,上面两个程序中的a即为变量。接下来,我们系统地学习一下如何定义一个变量。


变量的定义

根据上面两个程序,我们可以很轻松地总结出变量的定义方法:数据类型+变量名=赋值

下面我们来写一个关于个人年龄、身高、体重、姓名首字母的程序:

#include<stdio.h>

int main()

{

	int age=20;

	int height=180;

	float weight=70.5;

	char name='y';

	printf("%d\n",age);

	printf("%d\n",height);

	printf("%f\n",weight);

	printf("%c\n",name);

	return 0;

}

此程序运行结果:

重学C语言——变量及其生命周期_全局变量

局部变量和全局变量

我们经常能看到“局部”和“全局”这两个词语,那么在C语言中,局部变量和全局变量又是怎样的呢?我们先来看几个程序:

1.变量age作为全局变量使用

#include<stdio.h>

int age=100;

int main()

{

	printf("%d\n",age);

	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_局部变量_02

2.变量age作为局部变量使用

#include<stdio.h>

int main()

{

	int age=100;

	printf("%d\n",age);

	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_全局变量_03

(1)printf语句外再添一组中括号{}

.#include<stdio.h>

int main()

{

	int age=100;

	{

  printf("%d\n",age);

	}

	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_#include_04

(2)变量age外再添一组中括号{}

#include<stdio.h>

int main()

{

	{

  int age=100;  
	}

	printf("%d\n",age);

	return 0;

}

程序执行结果:可以看到程序在编译时出现了错误,无法执行

重学C语言——变量及其生命周期_局部变量_05

为什么会出现这种问题呢?因为此时我们设置的变量age是在主函数中又创建了一个中括号{},因此age处于二级括号中,而执行的打印函数处于主函数中的一级括号,匹配不对等,因此出现错误。

(3)我们在上面程序的基础上,将printf语句也放置在age所在的中括号{}中,看一下结果会不会发生变化

#include<stdio.h>

int main()

{

	{

  int age=100;  
  printf("%d\n",age);

	}

  
	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_变量的定义方法_06

此时,程序编译成功,没有报错。

(4)类比上面两个程序,我们再来调整一下printf语句,使其也处于单独的二级括号中,观察结果的变化

#include<stdio.h>

int main()

{

	{

  int age=100;  
	}

	{

  printf("%d\n",age);

	}

	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_生命周期_07

可以看到,编译又出现了错误,无法执行。

简单的定义一下局部变量和全局变量:

局部变量:定义在代码块{}内的变量

全局变量:定义在代码块{}外的变量

3.将局部变量和全局变量的名称设置相同,查看输出结果

在下面这个程序中,我们将局部变量和全局变量的名称均设为a,但局部变量a=10,全局变量a=100

#include<stdio.h>

int a=100;

int main()

{

	int a=10;

	printf("%d\n",a);

	return 0;

}

程序执行结果:

重学C语言——变量及其生命周期_生命周期_08

可以看到,输出结果为10,即局部变量所定义的数字。因此,若局部变量和全局变量的变量名相同时,局部变量优先。(一般不要使局部变量和全局变量的变量名相同)


生命周期

1.局部变量生命周期:进入作用域生命周期开始,出作用域生命周期结束。

2.全局变量生命周期:即整个程序生命周期。(全局变量作用域:整个工程文件)

 连接外部文件中的变量方法:extern+变量类型+变量名称



标签:生命周期,变量,int,age,局部变量,C语言,include,printf,全局变量
From: https://blog.51cto.com/u_16326700/8219295

相关文章

  • 6字符串变量
    字符串变量三种格式单引号双引号(推荐使用)不用引号var1='abc'#原样输出,在拼接字符串中使用无效,不能解析变量var2="abc"#可以解析得到值而不是原样输出,还可以解析子双引号;Var3=abc#不能包含空格获取字符串的长度语法${#变量名}shell字符串拼接无符号......
  • Shell内置变量 - date
    date是Shell中内置变量,用于获取日期时间。可通过以下命令,查看该内置变量的使用。date--help1、date的用法date的用法:date[OPTION]...[+FORMAT]这里介绍下常用的OPTION选项和+FORMAT格式。1.1、OPTION选项-d--date=STRING以字符串展示时间......
  • C语言结构体指针
    C语言结构体指针当一个指针变量指向结构体时,称它为结构体指针。C语言结构体指针的定义形式一般为:struct结构体名*变量名;下面是一个定义结构体指针的实例://结构体structstu{char*name;//姓名intnum;//学号intage;//年龄chargroup;//所在小组floatscor......
  • R语言群组变量选择、组惩罚group lasso套索模型预测分析新生儿出生体重风险因素数据和
    原文链接:http://tecdat.cn/?p=25158原文出处:拓端数据部落公众号 本文拟合具有分组惩罚的线性回归、GLM和Cox回归模型的正则化路径。这包括组选择方法,如组lasso套索、组MCP和组SCAD,以及双级选择方法,如组指数lasso、组MCP。还提供了进行交叉验证以及拟合后可视化、总结和预测的实......
  • 实验二 C语言分支与循环基础应用
    1.实验11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN246589intmain()10{11intnumber;12inti;1314srand(time(0));1516for(i=......
  • (七)Python之变量与常量
    Python变量:变量是计算机内存中的一块区域、存储规定范围内的值、值可以改变、通俗的说变量就是给数据起个名字。Python常量:其值在程序运行过程中保持不变的量Python变量赋值:1.Python中的变量不需要声名、变量的赋值操作时变量声明和定义的过程每个变量在使用前都必须赋值,变......
  • Vue3的生命周期
    1、setup():开始创建组件之前,在beforeCreate和created之前执行,创建的是data和method2、onBeforeMount():组件挂载到节点上之前执行的函数;3、onMounted():组件挂载完成后执行的函数;4、onBeforeUpdate():组件更新之前执行的函数;5、onUpdated():组件更新完成之后......
  • 切换JDK版本时修改JAVA_HOME环境变量不生效
     Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment           解决方法: (1)检查环境变量Path;(2)删除java.exe,javaw.exe,javaws.exe 在修改JDK的安装目录的情况下会出现失效的时候,因为jdk在安装的时候自己在path中添加了......
  • 环境变量的设置
    环境变量设置环境变量一般指的是用export内置命令导出的变量,用于定义shell的运行环境、保证shell命令的正确执行。shell通过环境变量确定登录的用户名、PATH路径、文件系统等各种应用。环境变量可以在命今行中临时创建,但是用户退出shell终端,变量即丢失,如要永久生效,需要修改......
  • B站C语言第11课——函数和递归
    1.工具cpulspuls.com  程序员知乎:stackoverflow.com232.递归——程序调用自身的编程技巧称为递归史上最简单的递归intmain(){ printf("hehe\n"); main(); return0;}递归常见的错误:栈溢出——例子1:#include<stdio.h>voidprintf(intn){if(n>9){print(n/10);}pr......