static的详细使用方法及例题

简介: static的详细使用方法及例题

1. static修饰变量

  a. 函数中局部变量:

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

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

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

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

  b. 全局变量

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


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



73d3a39fc0a14b699cd7a17973236940.png


  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修饰的参数创建在内存的静态区。

相关文章
|
2月前
|
C++
C++初阶(十二)string的模拟实现
C++初阶(十二)string的模拟实现
30 0
|
11天前
学习使用static的另一用法
【6月更文挑战第19天】学习使用static的另一用法。
5 1
|
27天前
|
C++
7.C++中string的一些超常用函数 (附习题)
7.C++中string的一些超常用函数 (附习题)
|
12月前
|
C语言
竟然有人如此解释关键字中的static
竟然有人如此解释关键字中的static
41 0
竟然有人如此解释关键字中的static
|
12月前
|
算法 Java API
【算法】字符串转int类型思路及代码
【算法】字符串转int类型思路及代码
119 0
C++(main函数知识点)
C++(main函数知识点)
|
存储 C语言 C++
C语言中static的用法
C语言中static的用法
123 0
|
机器学习/深度学习 编译器 C++
【C++初阶】六、STL---string模拟实现
目录 一、模拟实现接口总览 二、string模拟实现 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.3.1 传统写法 2.3.2 现代写法 2.4 赋值运算符重载 2.4.1 传统写法 2.4.2 现代写法 2.5 iterator 2.5.1 begin 2.6 Capacity 2.6.1 size 2.6.2 capacity 2.6.2 empty 2.6.3 reserve 2.6.4 resize 2.6.5 clear 2.7 Element access 2.7.1 operator[ ] 2.8 Modify 2.
58 0
【C++初阶】六、STL---string模拟实现
|
存储 C语言
C语言中的static的用法(超级详细)
C语言中的static的用法(超级详细)
193 0
C语言中的static的用法(超级详细)
【C++】-- static成员(附OJ题)
【C++】-- static成员(附OJ题)
【C++】-- static成员(附OJ题)