如果我将全局变量声明为静态变量,它将存储在数据段中。并且该文件中的所有函数都可以访问它。到目前为止没有问题......
如果在函数内部声明了一个静态变量,如下所示: int foo() { static int a; 。 。 }
所以这个变量“a”也存储在数据段中(如果我错了,请纠正我。)
我的问题是,如果可以跨函数访问存储在数据段中的全局静态变量。 但是函数内部定义的静态变量也存储在数据段中,不能跨函数访问,为什么?
答案 0 :(得分:2)
That is because of SCOPE
范围是可以访问变量的代码的区域或部分。可以
实施例
#include<stdio.h>
#include<conio.h>
void function1()
{
printf("In function1\n");
}
static void function2()
{
printf("In function2\n");
{
int i = 100;
Label1:
printf("The value of i =%d\n",i);
i++;
if(i<105)
goto Label1;
}
}
void function3(int x, int y);
int main(void)
{
function1();
function2();
getch();
return 0;
}
在示例中,
答案 1 :(得分:1)
它只是编译器和链接器实现的规则。首先,您可以在具有相同名称的不同函数中使用多个静态变量。