1. 静态变量
    2. 1. 作用域全局,内存不会因函数退出而销毁
    3. 2. int 初值默认为 0
    4. 自动变量
    5. 1. 函数、块作用域,随着函数和块退出而销毁
    6. 2. 没有默认初值
    1. #include <stdio.h>
    2. // file scope
    3. int global_var = 1;
    4. void LocalStaticVar(void) {
    5. // 静态变量
    6. static int static_var;
    7. // 自动变量
    8. int non_static_var;
    9. printf("static var: %d\n", static_var++);
    10. printf("non static var: %d\n", non_static_var++);
    11. }
    12. double Add(double a, double b);
    13. void CleanMemory() {
    14. int eraser = -1;
    15. }
    16. // proto scope
    17. //double Sort(int size, int array[size]);
    18. void PassByMemory(int parameter) {
    19. printf("%d\n", parameter);
    20. }
    21. void PassByRegister(register int parameter) {
    22. printf("%d\n", parameter);
    23. }
    24. int main(void) { // function scope
    25. // 自动变量
    26. auto int value = 0;
    27. { // block scope
    28. auto int a = 0;
    29. printf("%d\n", a);
    30. }
    31. //printf("%d\n", a);
    32. if (value > 0){
    33. int is_value_equals_0 = 0, b = is_value_equals_0;
    34. }
    35. // is_value_equals_0 success
    36. else {
    37. }
    38. LocalStaticVar();
    39. CleanMemory();
    40. LocalStaticVar();
    41. CleanMemory();
    42. LocalStaticVar();
    43. return 0;
    44. }