内部变量和外部变量就是局部变量和全局变量吗?

局部变量和全局变量是从作用域分类的
外部变量就是前面加了extern,这个是从生存期定义的
这个两者应该不能混为一谈
为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量
这样子的话那么这句话怎么理解呢?图片说明

3个回答

首先把对应的外部和内部分别说成是全局和局部,这个内外表示的域(即{})的内外,而不是extern表示的文件的内外。不过确实很多的时候这样的表示由于没有统一的叫法,不同的作者有自己的叫法,常常让读书的人费解。你ppt截图那个应该说的局部变量和全局变量的区别,然后就是因为寄存器就那么几个基本都是用来存放临时的变量才可以用,想想如果你好几个全局变量一直放在寄存器一直占用着寄存器,也就放那么几个全局,并不能提高程序的效率啊。因为寄存器速度很快,高效的利用才能发挥其效率,而频繁的改变它里面的值才能发挥这种效率。
另外,寄存器变量早就已经是毫无意义的东西了,基本都交给编译器去做了

qq_27564553
CrawlWu 回复hchchc6016: 就是内部定义的变量,而形参是编译器分配的,不是自己定义的
3 年多之前 回复
qq_27564553
CrawlWu 回复hchchc6016: 如果算广义的内部的话是的,但是这里的内部指的是局部变量啊
3 年多之前 回复
hchchc6016
hchchc6016 形参变量不就是内部变量的一种吗?为什么又要分开写呢?
3 年多之前 回复

由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register",C++11标准register变量相当于以前的anto变量,C++11标准的auto又赋予了新的功能。

由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register",C++11标准register变量相当于以前的anto变量,C++11标准的auto又赋予了新的功能。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
闭包就是能够读取其他函数内部变量的函数
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码 var n=999; function f1(){ alert(n)
static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量
static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量 2人收藏此文章, 我要收藏发表于2年前 , 已有1077次阅读 共2个评论 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量 作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点
C语言的局部变量和外部变量
在函数体或复合语句中声明的变量为局部变量。函数中的形式变量也是局部变量。在所有函数体外定义的变量称为外部变量(或全局变量)。
php函数相关(3):函数体中局部变量改变全局变量
1、引用传值       此时实参传递的不是值,而是传递的是实参指向的地址; <?php $a = 18; function aaa(&$num){ // 注意,此时的参数前有个 “&” 符号,是地址符号,传递的则不是参数对应的值,二是参数指向的地址了; return $num += 1; } echo $a; //18
关于局部变量,形式参数和全局变量在代码块中的作用域
局部变量:在函数内部(代码块内部)声明的变量,也称为“自动变量”,进入代码块创建,退出代码块销毁 #include int fun() { int a = 19; { int a = 20; { int a = 21; printf("%d\n", a); //21,局部优先,但只在当前代码块起作用,出代码块就销毁。 } printf("%d\n", a);
python中有关函数的全局变量和局部变量
例一:a = 9 def b(): print(a) 结果打印出来是:9 a 是定义在函数外部的全局变量,在函数内部可以使用。例二:a = 4 def b(): a = 8 print(a) b() print (a) 执行结果是:8,4 在函数内部定义的a 是局部变量,当我们调用函数b的时候,函数内部打印的是局部变量,函数外部打印的是全局变量a,并没有改变外部的全局
iOS开发关于block和局部变量和全局变量
iOS开发关于block和局部变量和全局变量block内部引用全局变量和局部变量一直都是一个坑 block与局部变量- (void)aboutBlock1{ __block int index = 100; int (^myBlock)(int addNum) = ^(int addNum){ index += addNum; return index
js变量:局部变量、全局变量、闭包
局部变量、全局变量      var a =1; function test(){ alert(a); var a = 2; alert(a); } test(); alert(a); 上面代码输出undefined   2   1         一、Javascript的变量的sc
JDK8的随笔(03)_Lambda表达式的变量使用范围讨论
Lambda变量使用以及使用范围概念普及 捕获变量 capture variables啥是capture variables先看一段代码的例子:public class LocalClassExample { static String regularExpression = "[^0-9]"; public static void validatePhoneNumber(
lambda表达式访问变量和方法
一、lambda表达式(lambda块)中访问变量和方法 1、lambda表达式可以其访问外层作用域定义的局部变量。但是lambda表达式不能修改外层局部变量的值。如: public static void main(String[] args) { double var = 100; // 外层局部变量 DemoFunc df = (n) -> { double res
解释局部变量、全局变量和静态变量的含义
<img style="CURSOR: hand" onclick="function onclick(){changeStyle(0);}" src="http://blog.hexun.com/img/xiao.gif" alt="字体变小" /> <img style="CURSOR: hand" onclick="function onclick(){changeSty
关于在多线程中,局部变量和全局变量的使用。
刚才在写坦克大战的时候,碰到一个很奇怪的问题。在一个无限循环的线程中,调用某个方法,方法里面的if(...)条件判断语句并没有起到作用。但是,在if里面打印出的判断语句仍然能正确显示true or false。        在纠结了一段时间后,幡然醒悟,是局部变量和全局变量的赋值引起的,只需改动一个地方就可以啦。代码如下: 主线程中: @Override public void r
【JavaScript】(5)匿名函数的定义方式、变量的作用域(局部变量,全局变量)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
全局变量、静态全局变量和静态局部变量的链接性
总结自Stephen Prata的《C++ Primer Plus》第五版   全局变量、静态全局变量和静态局部变量都是静态持续变量,编译器分配固定的内存来存储它们。   全局变量是定义在代码块或函数外部的变量,它的作用域是全局;静态全局变量是用static修饰的全局变量,它的作用域是全局;静态局部变量是定义在代码块或函数内部的静态变量,它的作用域是代码块或函数内部。   int gl
局部变量和全局变量,extern和static
局部变量和全局变量,extern和static
Block用法---局部变量和全局变量在Block中的使用
一、局部变量与block块 先看下面代码: [objc] view plain copy int number=100;  void (^TestBlock)(int)=^(int x){  number=number+x;  };  TestBlock(100);   你会发现 这么写编译器会报错误。错误截图如下: 所以,对于一个局部变量,bl
js变量:全局变量、局部变量、闭包
全局变量:在函数外面定义的变量: 1)在函数外定义的属性和方法,其实是window对象的属性和方法; 2)全局变量可以在当前页面中访问; 3)全局变量的作用域就是从当前页面定义的位置开始,到页面结束而消失;   局部变量:在函数里面定义的变量: 1)局部变量只能够在当前的函数中访问; 2)如果在函数中定义变量的时候没有加上var,那么js先会在当前函数中查
理解函数作用域链、局部变量和全局变量、闭包等概念
理解函数作用域以及闭包
shellScript之函数中的全局变量和局部变量
#!/bin/bash text="global variable" use_local_var_fun() { local text ="local variable" echo "In function use_local_var_fun" echo $text } echo "Execute the function use_local_var_fun" use_l
关于block访问外部变量的一些小注意点
Block类型是一个C级别的语法和运行机制。它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆、栈内存绑定的变量。因此,Block对象包含着一组状态数据,这些数据在程序执行时用于对行为产生影响。    你可以用Block来写一些可以传到API中的函数语句,可选择性地存储,并可以使用多线程。作为一个回调,Block特别的有用,因为block既包含了回调期间的代码,又包含了执
关于Static、全局变量、局部变量、Extern之间的种种
static作用(修饰函数、局部变量、全局变量) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char a
局部变量和全局变量以及成员变量的区别
@interface Person : NSObject { // 成员变量: // 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) // 成员变量只能通过对象来访问 // 注意: 成员变量不能离开类, 离开类之后就不是成员变量 成员变量不能在定义的同时进行初始化 // 存储: 堆(当前对象对应的堆的存储空间中) // 存储在
【C语言】C语言外部变量和内部变量
目录: 【外部变量】 · 定义 · 用extern修饰变量 【内部变量】 · 定义 · 用static修饰变量 1.外部变量 · 定义 定义的变量能被本文件和其它文件访问的变量,称为外部变量。 注: * 默认情况下,所有全局变量都是外部变量。 * 不同文件中的同名外部变量都代表同一个变量。 ·
Python3学习笔记4-函数,全局变量&局部变量,内置函数
Python学习笔记,函数,全局变量&局部变量,内置函数
Python新手学习基础之函数-全局变量和局部变量
python中的全局变量和局部变量
PHP 之局部变量与全局变量的交错(一)嵌套for循环中的变量
相信很多从c++/java/c#等过来的同学,可能会犯这样的错误: <?php for($i=0;$i<9;$i++) { #some code #many many code!... for($i=0;$i<8;$i++) { #some my ugly code } } ?> 外面一个大的for循环,写了很多代码以后,又
外部变量 全局变量
想清楚,好好用。 在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作
Python 局部变量与全局变量
问题由来: 考虑到想在运行结束后的用户空间里面查看一下数据,我把data1作为全局变量来进行处理。data1 = [] function a1() data1 = readData function a2() data1.dealData if __name__ == "__main__": a1() a2()此时,a2()函数没有任何输出,即data1为空。语法基
javascript setTimeout无法调用局部变量的解决办法
javascript中定时器setTimeout的用法一般如下,调用beginrotate之后就进入定时执行rotateloop的一个过程,如下代码: var angle = 0; function rotateloop() { if (angle < 360) { angle++; //use angle //......
OC 局部变量 成员变量 全局变量
// //  main.m //  局部变量和全局变量和成员变量 #import @interface Person : NSObject {     /*      写在类声明的大括号里面的变量,我们称之为成员变量(属性,实例变量)      成员变量只能通过对象来访问      注意:成员变量不能离开类,并且成员变
PHP学习:全局变量和局部变量的互相引用
2016-08-24局部函数调用全部变量的三种方法<?php //局部函数调用全局变量 //method one : using superglobal(超全局变量) $_POST['a']=100; function call1() { echo $_POST['a'].'<br>'; } call1();// method two : using $GLOBALS to
深入浅出理解局部、全局、静态、动态、外部变量
1、全部变量、局部变量 局部变量:定义在函数内部的变量,作用域为函数内部 eg: void fun(){ int x;} 全部变量:只能定义一次,多次引用。作用域为整个文件。 若同一个源文件,全局变量和局部变量重名是,在局部变量的作用域,全部变量不起作用。 关键词: 全部变量:函数外定义+全局可见+存放在内存的全局数据区+未初始化的的时候为0 局部变量:函数内定义+函数内可见+存放在栈区,函数退出变量消失+不显式初始化内容不可预知
PHP:php函数内不能访问函数外的变量原因 局部变量和全局变量
局部变量和全局变量 <?php $var1=6; echo "定义局部变量\$var=".$var1; include("a.php"); function myfun1(){ global $var1;//此处注意 echo "在myfun1()函数中输出局部变量"; echo "\$var1=".$var1; } myfun1(); functio
C++ 作用域规则
阐述了C++中:全局变量、局部变量、寄存器变量、静态变量、外部变量、const常量、volatile变量的作用域
在多线程情况下 局部变量与全局变量 哪个比较安全呢
局部变量是在堆栈中运行。每个运行的线程都有自己的堆栈。 别的线程无法访问得到,因此我们说,局部变量是“安全”的。 全局变量在堆中,堆是对所有的线程都可见的。 因此在两个以上的线程访问全局变量时,就会出现所谓的 “不安全”,a线程访问全局变量,赋值为a,然后中间睡眠了0.0001秒,在此期间b进程访问了全局变量,赋值为b了,此时a线程醒来了,抢了处理机,发现全局变量是b,显然不是我们a线程所
C51之局部变量和全局变量小记
若在C51中定义一个全局变量,编译器将在RAM中为该变量指定一个专用地址,在C程序中给变量赋的值将存入这个专用地址中,程序操作该变量是,首先从专用地址中取出存放的值,然后再进行计算。全局变量被定义在内存中的专门地址上,存储位置固定。对于频繁存取的重要变量但可以采用全局变量以减少代码的长度;由于全局变量总是占用内存,如果过多,或者把程序处理和计算中的一些中间变量也定义为全局变量,将大大消耗内存空间,
IOS中 Block用法进阶二 局部变量和全局变量在Block中的使用
一、局部变量与block块 先看下面代码: int number=100; void (^TestBlock)(int)=^(int x){ number=number+x; }; TestBlock(100);你会发现 这么写编译器会报错误。错误截图如下: 所以,对于一个局部变量,block里面这么做是非法的。也就是说使用可以,想改变没门!那么下面加一个修饰 __block (两个
31,外部全局变量和内部全局变量
1,外部全局变量 概念:可以被其他文件访问的全局变量称之为全局变量。默认情况下,所有的全局变量都是外部全局变量。 可以使用 extern显性声明一个外部全局变量 特点: 可以定义同名的多个外部全局变量;多个同名的外部全局变量指向同一块存储空间 eg: extern int num; 2,内部全局变量 概念:只能被当前文件访问的全局变量,我们称之为内部全局变量 。 使用sta
var 全局变量 局部变量
var n1=1; n2=2; function f1(){     var n3=3;   n4=4; } console.log("n1="+n1); console.log("n2="+n2); //console.log("n3="+n13); Error: n13 is not defined //console.log("n4="+n14); Error: n13 i
shell局部变量和全局变量
shell局部变量和全局变量 2011-08-12 19:10 9968人阅读 评论(0) 收藏 举报 shellcentosbashjavalinux  一、变量分类 局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用的shell变量。 二、局部变量
相关热词 c#多人合作开发项目策略 c# cad 坐标转换 c# 窗口内运行word c#线程睡眠 c# 静默打开打印机 c#获取当前路径的上一级 c# 去除线条 c# 取整倍数 c#窗体最大化控件不变 c# 程序更新程序案例

相似问题

4
IIS中全局变量无故被清空了
6
c结构体全局变量的使用?
8
java 中全局变量与Scanner问题
1
全局变量释放的顺序怎样的?
4
类变量,成员变量,全局变量,局部变量,实例变量的区分?
1
java中基本类型都是存放在局部变量表中的吗
2
全局变量监控问题。谢谢了!
1
请问放在type中的数组能不能直接作为全局变量,怎么传给全局变量作为参数?
1
jsp页面中定义的局部变量和全局变量自加,刷新页面为什么全局变量每次+1,而局部变量不会呢?
1
请教一下VC全局变量和全局函数的问题
3
java 局部变量与全局变量问题
3
Java局部变量全局变量递归问题
2
vb的exe内存能不能直接同时读取ocx的内存里定义的全局变量的变量名?
2
怎么遍历求一个ocx里关联了多少exe内存里的全局变量?求这些全局变量的变量名的做法是什么?
2
ocx里出现同名字的全局变量,会不会覆盖主程序中对应的全局变量名?
2
请问vb语言中怎么区隔ocx内存中的全局变量和exe内存中的全局变量的定义?
2
在vb编程中我们一般定义全局变量在标准模块中,标准模块会像ocx那样自动分配的内存变量么?
2
怎么针对ocx访问exe的内存变量来定义exe里的全局变量,定义成public型的为什么还是不可以?
2
数组元素绑定全局变量的变量名,将数组作为ocx事件的参数可以实现么?
0
linux驱动,对全局变量和静态(static修饰)的数量大小有没有限制,可以改动吗?