首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在全局的int a;和int a=1;有什么区别?解决方法

2012-03-11 
在全局的int a和int a1有什么区别?今天在gcc下写程序时发现一个问题:我在全局的声明C/C++ codeint ain

在全局的int a;和int a=1;有什么区别?
今天在gcc下写程序时发现一个问题:
我在全局的声明

C/C++ code
int a;int a;

可以写无数个int a;重复声明不报错。而在函数中这么写编译器会报重复声明错误。
而只能写一个int a = 1;这是为什么?不理解。
int a;有没有给a分配内存空间?



[解决办法]
用int a是定义了一个变量,不使用关键字定义存储类型的话,这个变量就是extern型(external)的。
但是这个用extern型定义一个变量和用extern关键字引用性声明一个变量是不一样的。
之前你在int a = 1;这里也是定义了一个变量,这个外部变量是extern型的,所以就是重复定义。

一个变量是声明,必须同时满足两个条件,否则就是定义:
(1)声明必须使用extern关键字;(2)不能给变量赋初值

热点排行