static的详细使用方法及例题

发布于:2023-01-14 ⋅ 阅读:(405) ⋅ 点赞:(0)

前言:

作者简介:爱吃大白菜1132

人生格言:纸上得来终觉浅,绝知此事要躬行

 

如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步!

 

如果觉得博主文章还不错的话,希望三连支持!

目录

  1. static修饰变量

   a. 函数中局部变量:

   b. 全局变量

   c. 修饰变量时,没有被初始化时会被自动初始化为0

  2. static修饰函数

3.例题:

  1. static修饰变量

   a. 函数中局部变量:

      生命周期延长:该变量不随函数结束而结束

      初始化:只在第一次调用该函数时进行初始化

      记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值

      存储位置:不会存储在栈上,放在数据段

   b. 全局变量

     改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用

注:如果有一个项目,由A,B,C 三个人来完成,完成之后需要对接,但是三个人的程序中都有Add()函数,这样会使项目对接时无法辨别使用那个函数,若是再函数前加上static就可以避免这种错误,Add()函数只能在各自的程序中运行无法跨程序运行。


   c. 修饰变量时,没有被初始化时会被自动初始化为0

  2. static修饰函数

   改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用


3.例题:

#include <stdio.h>
int sum(int a)
{
    int c = 0;
    static int b = 3;
    c += 1;
    b += 2;
    return (a + b + c);
}
int main()
{
    int i;
    int a = 2;
    for (i = 0; i < 5; i++) 
    { 
        printf("%d,", sum(a)); 
    } 
} 

输入:

观察下述循环b的变化,b没有随着循环再次初始化为3,而是使用了前一次函数调用完成之后保存的值。

  第一次循环:a=2 b=5 c=1 a+b+c=8

  第二次循环:a=2 b=7 c=1 a+b+c=10

  第二次循环:a=2 b=9 c=1 a+b+c=12

  第二次循环:a=2 b=11 c=1 a+b+c=14

  第二次循环:a=2 b=13 c=1 a+b+c=16

注:static修饰的参数创建在内存的静态区。