局部变量和全局变量,以及作用范围的区别_外部变量和全局变量区别

局部变量和全局变量,以及作用范围的区别_外部变量和全局变量区别    在写工程文件的时候,犯了一个基础性的错误,基础不牢,地动山摇。所以通过查阅资料回顾了一些相关知识,并记录下来。防止以后再发生这种惨案。变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。变量按作用域分:  全局变量:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。由于同一文…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

       在写工程文件的时候,犯了一个基础性的错误,基础不牢,地动山摇。所以通过查阅资料回顾了一些相关知识,并记录下来。防止以后再发生这种惨案。

变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区

变量按作用域分:

  1.     全局变量:整个工程文件内都有效;“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值, 就能影响到其他函数中全局变量的值。
  2.     静态全局变量:只在定义它的文件内有效,效果和全局变量一样,不过就在本文件内部;
  3.     静态局部变量:只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;静态局部变量的生存期虽然为整个工程,但是其作用仍与局部变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。     
  4.   局部变量:在定义它的函数内有效,但是函数返回后失效。“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。

注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。

静态局部变量全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。

形参变量 :  只在被调用期间才分配内存单元,调用结束立即释放。

      在做工程的时候,我将全局变量传入函数的形参中,没注意将形参和全局变量同名了,导致全局的变量的值一直没有改变,错误的认为,编译器问题。。。。。。-_-|| 哈哈哈,论菜鸟是怎样炼成的。写个相似的代码,记录一下这个错误。

#include "stdio.h"
int Max = 1;
void add(int Max)
{
    Max = 2;
}

int main()
{
	add(Max);
	printf("Max = %d",Max);
	getchar();

	return 0;
}

Jetbrains全家桶1年46,售后保障稳定

局部变量和全局变量,以及作用范围的区别_外部变量和全局变量区别

进入函数后,形参的优先级要高于全局变量了,且函数执行完后,形参释放。这时候对代码进行如下的修改,才能得到想要的效果。地址传参,要么有返回值赋值的方式。

#include "stdio.h"
int Max = 1;
void add(int *Max)
{
    *Max = 2;
}

int main()
{
	add(&Max);
	printf("Max = %d",Max);
	getchar();

	return 0;
}

局部变量和全局变量,以及作用范围的区别_外部变量和全局变量区别

记录一下这个不好的习惯,变量命名要规矩,不能出现歧义性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219254.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月6日 下午9:22
下一篇 2025年7月6日 下午10:01


相关推荐

  • rsyslog日志服务器_php日志系统

    rsyslog日志服务器_php日志系统特性介绍:http://www.rsyslog.com/features/下载: http://www.rsyslog.com/download/本文内容来源于:http://blog.csdn.net/xiangliangyu2008/article/details/8102064===========================

    2022年8月15日
    8
  • SQL语句创建索引_MySQL索引

    SQL语句创建索引_MySQL索引createindex[index_mode]on[cn_name]([car_mode]);index_mode自定义索引名cn_name表名car_mode列名

    2025年9月23日
    8
  • MinGW32和64位交叉编译环境的安装和使用「建议收藏」

    MinGW32和64位交叉编译环境的安装和使用原文出处: CompileGraphicsMagick,Boost,BotanandQTwithMinGW64underWindows764 http://www.kineticsystem.org/?q=node/191安装MSYS从下面的地址下载并运行:mingw-get-inst-20120426.exehttp://so

    2022年4月8日
    248
  • JPA环境下使用Hibernate二级缓存

    JPA环境下使用Hibernate二级缓存http://tuhaitao.iteye.com/blog/568653hibernate二级缓存本质上分为两类:1.对象缓存2.查询缓存在JPA环境下,例如Jboss,底层还是通过Hibernate来实现JPA的Query。下边简单说一下配置的步骤:1.配置entity在实体上方加入@CacheJava代码 import j

    2022年5月10日
    36
  • PHP与ECMP,三菱plc浮点数运算指令(ecmp与ezcp指令)的用法

    PHP与ECMP,三菱plc浮点数运算指令(ecmp与ezcp指令)的用法三菱 plc 浮点数运算指令浮点数运算指令 FNC110 FNC1320 用于浮点数的处理 浮点数为 32 位数 包括浮点数的比较 变换 四则运算 开平方运算和三角函数等 13 条指令 所有的浮点数处理指令都是 32 位指令 在使用时 大多数指令的助记符前面必须加上 32 位运算的标识符 D 它们分布在指令编号为 FNC110 FNC119 FNC120 FNC129 FNC130 FNC139 之中 1 二进制浮点数

    2026年3月17日
    2
  • uboot、kernel和rootfs烧录「建议收藏」

    uboot、kernel和rootfs烧录「建议收藏」烧写主u-bootmw.b0x420000000xff0x100000tftp0x42000000master/image_glibc/u-boot-hi3536.binsfprobe0sferase0x00x100000sfwrite0x420000000x00x100000reset注:1)这里的mw.b以字节写入,0x42000000是ddr的起始…

    2022年10月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号