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

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

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


相关推荐

  • 大数据资产管理实战

    大数据资产管理实战各位好,今天和大家分享“大数据资产管理实战”这个课题。本次分享包括大数据资产管理的概述、方法论和实施效果三个部分的内容。第一部分:大数据资产管理概述提到企业数字化转型,不得不提现在的一个主流观点:未来的企业必将成为数字化企业,每个公司都将会成为软件公司!未来企业增长和竞争的能力越来越取决于其数字化创新能力。为了应对企业数字化转型,企业IT架构采用分布式、微服务、移动化、大数据等技术来应对业务变化带…

  • django drf_mnbkdrf

    django drf_mnbkdrf前言我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializerModelSerializer先来看下ModelSer

  • a标签属性 rel=noopener noreferrer

    a标签属性 rel=noopener noreferrer

  • window10安装mysql8.0_win7安装MySQL所需环境

    window10安装mysql8.0_win7安装MySQL所需环境mysql官网找到下载–>拉到最下面找到社区版下载–>下载下面是我下载好的度盘链接提取码:sws3解压到指定目录此时解压后的文件中没有data目录和ini文件然后做环境变量,也可以最后再做win7和windowsserver2008r2做环境变量都是在Path里用分号隔开前面的路径,直接加上mysql的bin目录绝对路径即…

  • 80×86汇编语言_站长窝

    80×86汇编语言_站长窝[序言]旧版的”80×86汇编小站站长简单介绍”已经过时了,因此于2013年10月01日花费1个小时又一次更新和排版一次.[人生格言]1]一生都用头脑而不是情绪解决这个问题2]仅仅有偏执狂才会成功3]在最困难时都要保持一份幽默感4]吾生也有涯,而知也无涯,以有涯随无涯,殆已[简历]经常使用网名:猪头三出生日期:1981.XX.X…

    2022年10月13日
  • 搭建自己的云计算平台

    1.Enomalism(http://www.enomaly.com/)云计算平台。Enomalism是一个开放源代码项目,它提供了一个功能类似于EC2的云计算框架。Enomalism基于Linux,同时支持Xen和KernelVirtualMachine(KVM)。Enomalism提供了一个基于TurboGearsWeb应用程序框架和Python的软件栈。

发表回复

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

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