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

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

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


相关推荐

  • 模糊控制器matlab仿真_有关bp神经网络Matlab的书

    模糊控制器matlab仿真_有关bp神经网络Matlab的书以下多套系统源码:1、MATLAB二级倒立摆三级倒立摆(在MATLAB下的二级倒立摆、三级倒立摆的仿真。内有所有需要的m文件)2、倒立摆matlab代码3、神经网络倒立摆控制(利用matlab对倒立摆的仿真,效果十分不错)4、二级倒立摆模型(这是一个演示直线二级倒立摆的matlab运行模型,这个模型能够根据仿真数据动画演示出二级倒立摆的运动情况。)5、倒立摆源码(倒立摆源码程序,注释很详细,是学习倒立摆原理,PID算法很好的参考资料。代码书写规范,注释详细。)6、二级倒立摆神经网络控制7

    2022年8月18日
    3
  • java weakhashmap_解析WeakHashMap与HashMap的区别详解

    java weakhashmap_解析WeakHashMap与HashMap的区别详解WeakHashMap,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,见实例:此例子中声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMapremove掉a并且将a、b都指向null时,WeakHashMap中的a将自动被回收掉。出现这个状况的原因是,对于a对象而言,…

    2022年5月6日
    40
  • 什么是pl/sql语句_过程化SQL有三种循环结构

    什么是pl/sql语句_过程化SQL有三种循环结构—认识PL/SQL   ***PL/SQL的使用几乎贯穿于整个Oracle的学习过程,也是作为一个初级开发人员必须掌握的重要知识点。   ***结构化查询语言(SQL)是用来访问和操作关系型数据库的一种标准通用语言,它属于第四代语言(4GL),       简单易学,使用它可以很方便地调用相应的语句来取得结果。该语言的特点就是非过程化。也就是说,使用       的…

    2022年10月11日
    0
  • 求Sn=a+aa+aaa+…+aaa…a的值

    求Sn=a+aa+aaa+…+aaa…a的值

    2021年8月17日
    68
  • python 保留两位小数

    python 保留两位小数>>>a=1>>>b=3>>>print(a/b)0>>>#方法一:…print(round(a

    2022年7月5日
    19
  • Python基础知识概要

    非常简单的python入门,了解这门语言,用来为接下来的开发做基础。

    2022年3月11日
    36

发表回复

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

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