全局变量与局部变量

C/C++中全局变量与局部变量的关系

  1. 全局变量与局部变量可以重名,在某个函数内引用变量时,会用到局部变量而不是全局变量,可以理解为“就近原则”。
  2. 当一个函数体内有多个局部变量时,这些局部变量的作用于就限定在函数体内的更小一级区域,比如函数体内有两个循环体,在两个循环体内都定义了局部变量val,则val的作用域就为循环体内而不仅仅是函数体内。
  3. 重名情况下如果要使用全局变量,则需要使用作用域运算符(::),将该作用域运算符放在重名变量之前。
  4. 全局变量可以被多个.C与.CPP文件使用,但要以static限定作用域为仅在本源文件中,也可在不同文件中声明,但只能允许在一处地方声明。
  5. static放在全局变量之前构成静态全局变量,这与普通全局变量相比,在存储方式上都是静态存储方式,区别在于作用域。静态全局变量的作用域为定义该变量的源文件,所在在同一源程序下的其他源文件是无法使用该变量。而普通全局变量的作用域为整个源程序。一个源程序可以由多个源文件组成。
  6. static放在局部变量之前构成静态局部变量,这与普通局部变量相比,作用域相同,区在于存储方式。静态全局变量为静态存储,而局部变量为动态存储。
  7. 全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。局部变量存放在栈区。
  8. 当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。因为局部变量在函数调用后就销毁了,虽然地址还在,但是那个地址存的数据是无法保证安全性的。
时间: 2025-01-02 04:27:12

全局变量与局部变量的相关文章

C语言之全局变量和局部变量

全局变量和局部变量的简介(tips:很重要 牢记) 全局变量:就是定义在函数外的变量 全局变量可以在任意函数中使用 生命周期:程序一启动就开辟空间,直到程序退出才回收 全局变量不允许同名 局部变量:就是定义在函数内的变量 局部变量只能在它声明的位置开始到它所在的代码块结束 生命周期:它所在的代码块结束就回收 不同的作用域里,局部变量可以同名 tips:代码例子如下 #include <stdio.h> int globeNum = 10;   //全局变量 void test1(){ prin

c语言全局变量和局部变量问题汇总

1.局部变量是否能和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,须要使用"::" 局部变量能够与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内能够定义多个同名的局部变量,比方在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.怎样引用一个已经定义过的全局变量? 答:extern 能够用引用头文件的方式,也能够用externkeyword,假设用引用头文件方式来引用某个在头文件

JavaSCript全局变量与局部变量

今天公司一个实习小妹子问我两段js代码的区别: [javascript] view plain copy <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a); } </script> [javascript] view plain copy <script ty

Javascript之全局变量和局部变量部分讲解

以此文作为自己学习的一个总结. 关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量. 一.局部变量和全局变量重名会覆盖全局变量 1 var a = 1; 2 function test1() { 3 var a = 2; 4 alert(a); 5 } 6 test1();// 2 这里的函数中的定义的a是局部变量,它的作用域为函数{}之间,函数外定义的a为全局变量,它的作用域为整个程序(描述有点不准确).在函数中的局部变量和全局变量重名,局部变量会

JS关于全局变量跟局部变量的总结

一.Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是function块,而for.while.if块并不是作用域的划分标准,可以看看以下几个例子: 1 <script> 2 function test2(){ 3 alert ("before for scope:"+i); // i未赋值(并不是未声明!使用未声明的变量或函数全抛出致命错误而中断脚本执行) 4 5 // 此时i的值是underfine

JS的全局变量跟局部变量

一.Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是function块,而for.while.if块并不是作用域的划分标准,可以看看以下几个例子: <script> function test2(){ alert ("before for scope:"+i); // i未赋值(并不是未声明!使用未声明的变量或函数全抛出致命错误而中断脚本执行) // 此时i的值是underfined for(var

关于js中全局变量和局部变量的寄到小题

往往最基本的也是最根本的. 这里有三道关于全局变量和局部变量的小题,供诸位一阅. 知识点: (1)在最外层声明的是全局变量 (2)在函数内声明的是局部变量 (3)在函数体内部,但是没有用var声明的变量也是全局变量 第一题: var a = 10;function fun(){var a = "global";}console.log(a); 第二题: var a ;function fun(){a = "global";} fun();console.log(a)

Java——全局变量与局部变量的区别

在Java程序中,会根据变量的有效范围将变量分为成员变量和局部变量,通常类的属性成为累的全局变量(成员变量),成员变量在整个类中都有效,在类的方法体中定义的变量称为局部变量,局部变量只在当前代码体中有效不能用于类的其他方法中.成员变量可与局部变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效,只取局部变量的值.举个例子: 1 public class Man{ 2 static int age=20; 3 public static void main(String[] ar

JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是将一组需求分解成一组函数与数据结构的技能. 1.函数的功能 代码重复性使用 模块化编程 2.语法: 使用函数前要先定义才能使用 函数定义有三个部分:函数名,参数列表,函数体 格式: 1 function 函数名([参数1, 参数2, ...]){ 2 3 函数执行部分; 4 5 return 表达式; 6 7

static变量,全局变量,局部变量

/* c++ static变量,全局变量.局部变量 */ #include<iostream> using namespace std; static int x=1; static int y=2; struct A { static int x; static int y; }; int A::x=3; int A::y= x;//3 为什么是3,原因在哪里 //int A::y= ::x; //1 为什么是1,原因在哪里 int main() { cout<<A::y<