两者的区别只在于作用域和生存周期.main函数是一个进程的入口,此外,和别的函数无区别.
①.、main函数里定义的是局部变量,只是在main函数里有效.
扩展资料:
全局变量是编程术语中的一种,源自于变量之分.
变量分为局部与全局,局部变量又可称之为内部变量.由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用.
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建.全局变量是可以被本程序所有对象或函数引用.
局部变量(Local
variables)指在程序中只在特定过程或函数中可以访问的变量.局部变量是相对于全局变量而言的.在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量.
面向对象编程是现在普遍采用的是软件开发方法,所以呢无需考虑是局部变量还是全局变量,说到变量,往往都是局部变量.
参考资料:百度百科-局部变量
参考资料:百度百科-全局变量
任何一种编程语言都离不开变量,特别是数据处理型程序,变量的使用非常频繁,没有变量参与程序甚至无法编制,即使编制运行后的意义也不大.变量之所以重要,是因为变量是编程语言中数据的符号标识和载体.
C语言是一种应用广泛的善于实现控制的语言,变量在C语言中的应用更是灵活多变.那么变量究竟是什么呢?变量是内存或寄存器中用一个标识符命名的存储单元,可以用来存储一个特定类型的数据,并且数据的值在程序运行过程中可以进行修改.可见,变量首先是一个标识符或者名称,就像一个客房的编号一样,有了这个编号我们在交流中就可方便言表,否则,我们只可意会,那多不方便.为了方便,我们在给变量命名时,最好能符合大多数人的习惯,基本可以望名知义,便于交流和维护;其次,变量是唯一确定的对应内存若干存储单元或者某个寄存器.这些是编译器来保证的,用户一般不用费心.
程序员一旦定义了变量,那么,变量就至少可为我们提供两个信息:一是变量的地址,即就是,操作系统为变量在内存中分配的若干内存的首地址;二是变量的值,也就是,变量在内存中所分配的那些内存单元中所存放的数据.
由于程序的多样需要,我们对变量也有各种各样的要求,比如:变量的生命期,变量的初始状态,变量的有效区域,变量的开辟地和变量的开辟区域的大小等等;为了满足这些要求,C语言的发明者就设置了以下变量:
①.、 不同数据类型的变量;如:char cHar, int iTimes, flaot faverage;
C语言中,变量在内存中开辟地的大小由数据类型决定的,由于PC机中规定一个地址单元存一个字节,不同的数据类型的变量,为其分配的地址单元数是不一样的.C语言中除几种基本的数据类型外用户还可以自己定义所需要的数据类型:
①.、 bool型 sizeof(bool): 1
typedef struct tagMyData
{
char cHar;
int iTimes;
float faverage;
}MyDatap;
char szBuf[]="HELLO CC++!";
局部变量和全局变量是相对而言的;如下:局部变量 int itmp;
int Get_Max( const int x, const int y, const int z )
int itmp;
if(x y) itmp = x;
else itmp = y;
if( itmp z ) return itmp;
else return z;
}
在函数内部说明的变量为局部变量,只有在函数执行时,局部变量才存在,当函数执行完退出后,局部变量随之消失.也就是,当函数执行完退出后,原先在函数内定义的变量现在不能用,这通常由编译器保证,它会阻止编译通过.也就是说,原来为那个局部变量分配的内存,现在已经不属于它,它再无权访问了.如要再使用这些内存单元就必须从新定义变量来申请,只有分配给的变量才可访问它.否则,就会出错,如数组越界访问.
与局部变量不同,全局变量在整个程序都是可见的,可在整个程序运行过程中,对于任何一个程序都是可用的.全局变量的说明的位置在所有函数之外,但可被任何一个函数使用,读取或者写入.如下:全局变量 int iCount, bool bForward;
int iCount; //全局变量;
bool bForward; //全局变量;
void add( void );
void dec( void );
void man(void )
while( iCount 1000 iCount -1000)
add( );
dec( );
printf("COUNT:%d;\n", iCount)
void add( void )
if( bForward ) iCount++;
void dec( void )
if(!bForward ) iCount--;
可见,全局变量非常方便不同函数间数据共享,同样,任何函数在在使用数据时,都不敢保证数据是否已被修改.如果程序员无法保证这个,就尽量避免使用全局变量.
静态变量是分配在存储器中C程序所占据的数据段内, C程序运行的整个过程中一直保留,不会被别的变量占用.静态变量可以定义成全局变量或局部变量,当定义为全局变量时,在它定义的程序的整个运行期间均存在并且保持原来的存储单元位置不会改变.那么既然有了全局变量为什么还要定义全局静态变量呢?看下边的示例:
外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的结尾.在此作用域内,全局变量可为各个函数所引用.编译时将外部变量分配在静态存储区.
有时要用extern来声明外部变量,以扩展外部变量的作用域. 也可用static声明外部变量,使该变量不能被其他文件引用.
用extern声明外部变量
extern可省略不写.
本文件里:在一个文件里,有不止一个函数,外部变量在第一个函数后面定义.若用extern在第一个函数前声明该变量则该变量可以在第一个函数中使用.
多个文件中:在其他文件中若想要用该文件中已声明的变量,则在文件头部声明该变量,即可在文件中使用.
用static声明外部变量
static声明后该外部变量就只能在本文件中使用.
定义在函数体外部的变量叫全局变量,
要定义全局变量你只要把变量定义在
所有函数外部即可.
要注意的是,全局变量只对它定义位
置以下的函数可见.
#includestdio.h?
void?f1();
int?y=100;
int?main()
printf("%d\n\n",y);
//printf("%d\n",x);这不可以读x,x对main()不可见?
f1();
return?0;
int?x;
void?f1()
}?
printf("%d\n",x);
printf("%d\n",y);
①.、首先,我们可以在函数外面定义变量,就是全局变量.
以上就是土嘎嘎小编为大家整理的c语言函数外声明变量相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!