作为引用性声明出现的extern变量可以是全局变量,也可以是局部变量

shaode01 2013-05-30 04:38:20
作为引用性声明出现的extern变量可以是全局变量,也可以是局部变量,但extern的变量不是肯定在某处被定义过了吗?而作为定义性声明出现的extern变量必须是全局变量;这不是说作为引用性声明出现的extern变量也必须是全局变量?怎么能是局部变量呢?
...全文
365 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2013-05-31
  • 打赏
  • 举报
回复
引用 5 楼 shaode01 的回复:
[quote=引用 4 楼 dos5gw 的回复:] 大概你理解错了"局部变量做extern声明", 而是"extern声明可以放在局部作用域"
有道理,mujiok2003童鞋想表达的就是这个意思,extern int a声明的虽然是全局变量a,但作用域只在它所在的大括号内。为什么可以这么用大括号呢?不是函数不是for语句,大括号还可以这么用?[/quote] 块作用域。
shaode01 2013-05-30
  • 打赏
  • 举报
回复
引用 4 楼 dos5gw 的回复:
大概你理解错了"局部变量做extern声明", 而是"extern声明可以放在局部作用域"
有道理,mujiok2003童鞋想表达的就是这个意思,extern int a声明的虽然是全局变量a,但作用域只在它所在的大括号内。为什么可以这么用大括号呢?不是函数不是for语句,大括号还可以这么用?
dos5gw 2013-05-30
  • 打赏
  • 举报
回复
大概你理解错了"局部变量做extern声明", 而是"extern声明可以放在局部作用域"
shaode01 2013-05-30
  • 打赏
  • 举报
回复
#include<stdio.h>
int a=5;
void main()
{
	int a=6;
	{        //为什么可以在这里加大括号?
	//	printf("%d\n",a);//加上这句会出现: syntax error : missing ';' before 'type'	
	extern int a;
	printf("%d\n",a);
	}
		printf("%d\n",a);

}
我在C里面写这段代码,为什么出现错误?
shaode01 2013-05-30
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
试试读懂这段段代码

#include <iostream>
int a = 5;

int main()
{  
  int a = 6;
  {
	  std::cout << a << std::endl;
	  extern int a;
	  std::cout << a << std::endl;
  }
  std::cout << a << std::endl;

}
//6
//5
//6
int a = 5;这里缺省为extern的,所以里面 extern int a;引用的也是外面这个a,这么一来作为引用性声明出现的extern变量还是全局变量啊,你想说明什么?举例不应该举个局部变量的么?
mujiok2003 2013-05-30
  • 打赏
  • 举报
回复
试试读懂这段段代码

#include <iostream>
int a = 5;

int main()
{  
  int a = 6;
  {
	  std::cout << a << std::endl;
	  extern int a;
	  std::cout << a << std::endl;
  }
  std::cout << a << std::endl;

}
//6
//5
//6

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧