static全域變數與普通全域變數有什麼差別?
**簡單:**變更它的作用域,限制他的使用範圍
static區域變數與普通區域變數有什麼差別?
**簡單:**改變了他的儲存方式,也就是改變他的生命週期。
全域變數可不可以定義在可被多個.c文件包含的.h文件中
可以,在不同的.c文件中以static形式來宣告同名全域變數。(待測試)
印出的值是?
int globalVar;
void foo1() {
int localVar = 0;
static int staticVar = 0;
localVar++;
staticVar++;
globalVar++;
printf("[foo1] local: %d, static: %d, global: %d\n", localVar, staticVar, globalVar);
}
void foo2() {
int localVar = 0;
static int staticVar = 0;
localVar++;
staticVar++;
globalVar++;
printf("[foo2] local: %d, static: %d, global: %d\n", localVar, staticVar, globalVar);
}
int main() {
foo1();
foo2();
foo1();
foo2();
}
下面的程式實作A+B,請問錯誤在哪?
int add(int B){
static int A = 100;
A += B;
return A;
}
第二次調用時static會紀錄上次的A值,會出錯。
印出的值是?
int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+c);
}
void main()
{
int I;
int a=2;
for(I=0;I<5;I++)
{
printf("%d,", sum(a));
}
}