• 20170418


     变量 的两个重要特征:生命周期和作用域
     决定什么时候以及在什么地方可以使用某个变量。
     作用域:
     1. 全局变量
     声明在所有函数之外的变量叫全局变量。全局变量的作用域是由程序中的所有语句构成的。没有初始化的全局变量自动被初始化成0.
     2. 局部变量
     声明在函数内部的变量叫局部变量,局部变量的作用域包含函数内部的所有语句。
     3.块变量
     块变量的作用域包含语句块内部的所有语句
     生命周期:
     全局变量,局部变量和块变量的声明周期也不一样
     
     全局变量的存储位置在程序开始时被分配,在程序结束时被回收。全局变量的生命周期包含整个程序运行期间。
     局部变量的存储位置在函数开始运行时被分配,在函数结束时回收,局部变量的生命周期包括整个函数运行期间。
     形式参数的生命周期和局部变量一样。
     块变量的存储位置在语句块开始运行时被分配,在语句块结束时被回收,它的生命周期包括整个语句块运行期间。
     
    声明变量时可以使用关键字
    1.auto关键字用来声明自动变量。
    所有局部变量缺省都是自动变量,几乎不需要使用这个关键字。
    2.static关键字用来声明静态变量,静态变量的生命周期和作用域是和不同东西相关的,它们不一致
    静态全局变量:静态全局变量的作用域包括声明它的那个文件中的所有语句。
    静态局部变量和静态块变量:生命周期被拉长,它们的生命周期包括整个程序运行期间。
    没有初始化的静态局部变量自动被初始化成0。
    静态局部变量和静态块变量的初始化只在程序开始时执行一次
    3.const关键字用来声明不可赋值的变量
    这种变量应该在初始化的时候赋值
      1 #include <stdio.h>
      2 int main() {
      3     const int num = 12;
      4     printf("请输入一个数字:");
      5     scanf("%d", &num);
      6     printf("num是%d ", num);
      7     return 0;
      8 }
    用这样的方法,改变了const中的内容,这种变量的内容可以通过其他方式修改
    4.volatile关键字用来声明多变的变量。
    这种变量的内容随时可能被改变,而且这种改变的原因不是我们的语句构成的。
    练习:
    1.编写递归函数打印数组中的所有数字。
      1 #include <stdio.h>
      2
      3 void print(int arr[], int size,int curr) {
      4     if(curr == size - 1) {
      5         printf("%d ", arr[curr]);
      6         return ;
      7     }
      8     printf("%d ", arr[curr]);
      9     print(arr, size, curr + 1);
     10 }
     11
     12 int main() {
     13     int arr[] = {1, 7, 3, 45, 2, 8, 9};
     14     print(arr, 7, 0);
     15     return 0;
     16 }

  • 相关阅读:
    名字匹配(水题)
    奇怪的键盘
    杰杰的键盘
    Windows Message Queue(优先队列)
    筛法求素数
    会场安排问题(贪心)
    Sail
    Elevator
    Lowest Bit
    File Searching
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6729288.html
Copyright © 2020-2023  润新知