2017-08-27 111 views
1

内部函数静态变量在再次调用时保留其值,但为什么在这种情况下不会发生?静态变量不保留其功能内的值

#include <stdio.h> 

void print(void) { 
    static int x; 
    x = 10; 
    x += 5; 
    printf("%d ", x); 
} 

int main() { 
    print(); 
    print(); 
    return 0; 
} 

它给出的输出为15 15

+6

重置为'X = 10;'每次调用。 – BLUEPIXY

+1

急需C书 –

回答

8

你每次都分配一个新的值:

static int x; 
x = 10;    // <- assignment 

你可能想要的是初始化:

static int x = 10; // <- initialization 

初始化只一次可变生命中发生,static意味着变量生活的整个程序的执行时间。

0

初始化静态变量将解决问题。下面更正例如解决了问题,并给了我1520

#include <stdio.h> 

void print(void) { 
    static int x = 10; //Initialize here 
    // x = 10; //remove this statement 
    x += 5; 
    printf("%d ", x); 
} 

int main() { 
    print(); 
    print(); 
    return 0; 
}