2 hchchc6016 hchchc6016 于 2016.03.07 10:45 提问

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

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

3个回答

qq_27564553
qq_27564553   2016.03.07 11:27
已采纳

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

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

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

u010177010
u010177010   2016.03.07 10:55

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
闭包就是能够读取其他函数内部变量的函数
闭包(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