hchchc6016
2016-03-07 02:45
采纳率: 91.2%
浏览 2.9k
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Crawl.W 2016-03-07 03:27
    已采纳

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

    点赞 评论
  • 徐小hi 2016-03-07 02:54

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

    点赞 评论
  • 徐小hi 2016-03-07 02:55

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

    点赞 评论

相关推荐 更多相似问题