变量作用域2


到这里解决了一个文件内变量的作用域,那么如果有两个或多个文件想共同使用一个变量(在某个文件中声明的)
函数参数无能为力了!其实作用域是相对一个文件内的变量而言的!
这时来了变量的链接!
链接
1.外部连接(external linkage) 
2.内部连接(internal linkage)  static
3.空连接(no linkage)

作用域和链接的关系:
1.具有代码块作用域或函数原型作用域的变量具有空连接,表示他们被代码块或函数私有
2.具有文件作用域的变量可能有内部或外部连接
            一个具有外部连接的变量可以被多个文件共享,解决了!
           一个具有内部连接的变量可以象全局变量一样在一个文件的任何地方使用
(但是必须是文件作用域的变量被     说  明成内部连接,如果不是,就还是不能在一个文件的任何地方使用)

例如
int g_var = 5;  //文件作用域,外部连接  //如果在别的文件中使用那么使用extern int g_var来声明,不然会提示g_var未                    //定义,使用了extern来声明,就不用#include了  extern并不是定义时的关键字
static int g_static=3;   //文件作用域,内部连接
int main()
{...}
和该文件属于同一程序的其他文件都可以使用变量g_var,而g_static是该文件私有的
说明连接是用来区别文件作用域的
例如:main

#include  < stdio.h >

void  Print( void );
//
//  global variable 
int  main_scop = 0 ;

//


int  main()
{

    
for(int i=0;i<2;i++)
    
{
        Print();
    }


    
    
return 0;
}



other.cpp

#pragma  once


extern   int  main_scop; // 来声明对main_scop的引用

#include 
< stdio.h >

void  Print( void )
{
    printf(
"%d ",main_scop);
}

在other.cpp中声明了main_scop
不然main_scop 虽然能被多个文件使用,但是在other.cpp中还是不能使用的.
必须有extern int main_scop;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值