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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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;
}

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MD5加密详解

    MD5加密详解MD5加密详解加密过程:密码:123456(明文形式)—–>加密后49ba59abbe56e0571.密码在请求提交后到达控制器2.到达控制后通过加密规则,转换成密文3.在经过DAO查询与数据库中已经存在的密文密码比对是否一直,一致,则放行。用户注册密码时是加密存储的用户修改密码时,也需要进行加密存储加密规则:加密规则可以自定义,在项目中通常使用BASE64和MD5,本文使用的加密规则就是MD5,BASE64:可反编码的编码方式​

  • IDEA汉化之2021版本

    IDEA汉化之2021版本打开最新版本的IDEA后在浏览器直接进入Chinese(Simplified)LanguagePack/中文语言包-IntelliJIDEs|JetBrains,右上角,IDEA中会出现弹窗,直接起飞!

  • 数据结构与算法栈的详解_数据结构怎么判断出栈的顺序

    数据结构与算法栈的详解_数据结构怎么判断出栈的顺序一、什么是栈栈(stack)是一种先进后出的有序列表,其中的元素只能在线性表的同一端进出,允许元素插入和删除的一端被称为栈顶(top),固定的另一端被称为栈底(button)。二、数组简单实现栈

  • redis源码 -ziplist

    注释的翻译:/*Theziplistisaspeciallyencodedduallylinkedlistthatisdesigned*tobeverymemoryefficient.Itstoresbothstringsandintegervalues,*whereintegersareencodedasactualint

  • SPI通讯协议介绍「建议收藏」

    SPI通讯协议介绍「建议收藏」来到SPI通讯协议了。废话两句,“SPI很重要”,这是我在学校时候听那些单片机开发工程师说的。出来实习,到后来工作,确实如此,SPI的使用很常见,那么自然重要咯。  SPI(Serialperipheralinterface)即串行外围设备接口,是由Motorola首先在其MC68HCxx系列单片机上定义的,基于高速全双工总线的通讯协议。(又是高速,而且全双工,确实强大)被广泛应用于ADC、LC

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

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