source: public/doc/gnu-c/Static-Local-Variables.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 4.1 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Static Local Variables (GNU C Language Manual)</title>
23
24<meta name="description" content="Static Local Variables (GNU C Language Manual)">
25<meta name="keywords" content="Static Local Variables (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Variables.html" rel="up" title="Variables">
33<link href="Extern-Declarations.html" rel="next" title="Extern Declarations">
34<link href="File_002dScope-Variables.html" rel="prev" title="File-Scope Variables">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Static-Local-Variables"></span><div class="header">
59<p>
60Next: <a href="Extern-Declarations.html" accesskey="n" rel="next">Extern Declarations</a>, Previous: <a href="File_002dScope-Variables.html" accesskey="p" rel="prev">File-Scope Variables</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="Static-Local-Variables-1"></span><h3 class="section">20.7 Static Local Variables</h3>
64<span id="index-static-local-variables"></span>
65<span id="index-variables_002c-static-local"></span>
66<span id="index-static"></span>
67
68<p>The keyword <code>static</code> in a local variable declaration says to
69allocate the storage for the variable permanently, just like a
70file-scope variable, even if the declaration is within a function.
71</p>
72<p>Here&rsquo;s an example:
73</p>
74<div class="example">
75<pre class="example">int
76increment_counter ()
77{
78 static int counter = 0;
79 return ++counter;
80}
81</pre></div>
82
83<p>The scope of the name <code>counter</code> runs from the declaration to the
84end of the containing block, just like an automatic local variable,
85but its storage is permanent, so the value persists from one call to
86the next. As a result, each call to <code>increment_counter</code>
87returns a different, unique value.
88</p>
89<p>The initial value of a static local variable has the same limitations
90as for file-scope variables: it can&rsquo;t depend on the contents of
91storage or call any functions. It can use the address of a file-scope
92variable or a static local variable, because those addresses are
93determined before the program runs.
94</p>
95
96
97
98</body>
99</html>
Note: See TracBrowser for help on using the repository browser.