现在的位置: 首页 > 综合 > 正文

变量作用域1

2013年10月03日 ⁄ 综合 ⁄ 共 1584字 ⁄ 字号 评论关闭

代码块作用域

#include <stdio.h>

int main()
...
{
 
int main_scop=0;
 
for(int i=0;i<2;i++)
 ...
{
  
int for_scop=1;
 }


 for_scop 
+=1;   //for_scop : undeclared identifier
 printf("for_scop : %d  ",for_scop);

 
return 0;
}
 

想要能使用for_scop的话,只要让for_scop在main函数体中声明,而不是在for复合语句块中定义.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

文件作用域

#include <stdio.h>

void MyPrint(void)
...
{
    printf(
"main_scop : %d  ",main_scop);  //main_scop' : undeclared identifier
}


int main()
...
{
    
int main_scop=0;

    
for(int i=0;i<2;i++)
    ...
{
        
int for_scop=1;
    }


    MyPrint();
    
return 0;
}


 因为main_scop在main函数中作用,在MyPrint中不作用,想要使用他,可以将他声明成文件作用域,也就是通常说的
全局变量,或者使用参数来传递,是函数与函数间交流
全局变量代码如下:

#include <stdio.h>

/**///////////////////////////////////////////////////////////////////////////
//global variable

int file_scop;
/**///////////////////////////////////////////////////////////////////////////
void MyPrint(void)...{
    printf(
"main_scop : %d  ",file_scop); 
}

int main()...{
    file_scop
=0;
    
for(int i=0;i<2;i++)...{
        
int for_scop=1;
    }

    MyPrint();
    
return 0;
}


参数传递代码:

#include <stdio.h>

void MyPrintHelp(int n)
...
{
    printf(
"main_scop : %d  ",n); 
}


int main()
...
{
    
int main_scop=0;

    
for(int i=0;i<2;i++)
    ...
{
        
int for_scop=1;
    }


    MyPrintHelp(main_scop);
    
return 0;
}


可见函数参数可以虚拟的扩大变量的作用域,如果一个函数的参数已经固定,你可以在为他添加一个帮助函数,使他的
一部分参数和固定的函数参数一样,另一部分是要扩大范围的变量的虚拟代表!推荐使用,避免使用全局变量!
第一个代码块作用域的例子也可以用函数参数来延续for_scop的作用域
 

抱歉!评论已关闭.