-
一只名叫tom的猫
这里有两个问题,生存期和范围。变量的范围是可以看到变量名称的位置。在此,x仅在函数foo()中可见。变量的生存期是变量存在的时间。如果x是在没有关键字static的情况下定义的,则生存期将是从foo()的条目到foo()的返回;因此每次调用都会将其重新初始化为5。关键字static的作用是将变量的生存期延长到程序的生存期;例如,初始化仅发生一次,然后该变量将在以后对foo()的所有调用中保留其值-无论它变为何种值。
-
梦里花落0921
输出:6 7原因:静态变量仅初始化一次(不同于自动变量),并且在运行时将忽略静态变量的进一步定义。并且,如果未手动初始化,则会自动通过值0进行初始化。所以,void foo() { static int x = 5; // assigns value of 5 only once x++; printf("%d", x);}int main() { foo(); // x = 6 foo(); // x = 7 return 0;}
-
慕雪6442864
与具有以下程序相同:static int x = 5;void foo(){ x++; printf("%d", x);}int main(){ foo(); foo(); return 0;}static关键字在该程序中所做的全部工作是(实际上)告诉编译器“嘿,我在这里有一个变量,我不希望其他人访问,也不告诉其他人它存在”。在方法内部,static关键字告诉编译器与上面相同,但是,“不要告诉任何人此函数存在于此函数之外,只能在此函数内部访问”。我希望这有帮助