Static storage duration

Static storage duration

An object whose identifier is declared without the storage-class specifier _Thread_local, and either with external or internal linkage or with the storage-class specifier static, has static storage duration. Its lifetime is the entire execution of the program and its stored value is initialized only once, prior to program startup.

Notes

Since its stored value is initialized only once, an object with static storage duration can profile the invocations of a function.

The other use of the keyword static is file scope.

Example

Profiling the invocations of function f().

#include <stdio.h>
 
void f (void)
{
    static int count = 0;   /* static variable    */
    int i = 0;              /* automatic variable */
    printf("%d %d\n", i++,count++);
    return;
}
 
int main(void)
{
    for (int ndx=0; ndx<10; ++ndx)
        f();
 
    return 0;
}

Possible output:

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/language/static_storage_duration

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部