Knowledge (XXG)

Static (keyword)

Source 📝

628: 25: 127: 407:
keyword can also be used to declare a member variable in a class to have static storage duration as well, independent from the storage duration of the class object itself, and such a variable must be defined outside the class. The effect is that the variable is shared among all class instances,
259:, which kept their meaning from B. However, in C, the concept of linkage for variables outside functions was introduced. A C program can be formed by multiple compilation units and linked together to form a complete program, which a variable or a function can be either specified as having 424:
keyword is used in many programming languages to specify a local variable to have a lifetime of the whole program, preserved between function invocations, instead of having its own copy for each function invocation as in automatic storage duration, inherited from the usage in C.
408:
becoming a class member instead of an instance member. When applied to a member function (method), it specifies that the member function operates independently of an instance, which means it can't access any non-static members of the class nor the
595:
to prevent capturing states which are captured by default. It is similar to static local variables and static class members in the sense that a static closure does not depend on the running invocation of the containing function.
495:). Other programming languages which support visibility declarations at top-level use a variety of other keywords to specify different level of visibility, for example, 483:
keyword in C, when used as a top-level declaration, makes the variable or function visible to its own compilation unit only. Modern programming languages generally uses
174:
to modify a declaration. The effect of the keyword varies depending on the details of the specific programming language, most commonly used to modify the lifetime (as a
363:
keyword, when used on variables, always declare a variable with static storage duration, there are two distinct meanings of the keyword, depending on where it is used:
519:
keyword is used in most programming languages with classes to specify a member to be a class member, instead of an instance member, inherited from the usage of C++.
342:
Every variable and function has one of these storage classes; if a declaration does not specify the storage class, a context-dependent default is used:
738: 216:
keyword to specify external storage (external to all functions and must be defined outside a function), which is always static, in contrast with
648: 370:
Block-scoped declaration: to declare a variable with static instead of automatic storage duration. C doesn't support block-scoped functions.
767: 706: 532:
For methods: cannot access any non-static members without an object expression (implicitly referring to the current instance), or the
367:
Top-level declaration: to declare an identifier with internal instead of external linkage, applicable to both variables and functions.
224:- one appears whenever the function is invoked, and disappears when the function is left.. All variables must be declared, as one of 757: 108: 42: 561:
reference to the outer class object and must exist in the context of an outer class instance, by declaring an inner class to be
526:
Indepedent from any class instances, can be accessed using the class name instead of an expression having the class object type.
581: 445: 312: 89: 46: 487:
to avoid name clashes, so this use isn't widely adopted apart from programming languages with C compatibility in mind (e.g.
61: 572:
keyword can be used in place of an actual class name to access static members to provide class-level polymorphism, called
471:. In these languages, a variable which is kept for the whole program execution needs to be declared outside functions. 633: 468: 460: 68: 35: 75: 433: 201: 57: 267:(visible to the whole program). These keywords specify both the storage duration and linkage as follows: 141: 720: 171: 592: 331: 249: 180: 565:, it does not carry such a reference and can be used independently to an outer class instance. 255: 378:
A variable with the same lifetime as the program, as described above (language-independent);
688: 82: 305: 289: 205: 175: 762: 529:
For fields: exist throughout the program lifetime (i.e. having static storage duration).
374:
Therefore, in C, the term "static variable" has two meanings which are easy to confuse:
140:
Please expand the article to include this information. Further details may exist on the
548:
Static initialisers in Java and Javascript, which are run once when the class is loaded
396:, which include variables declared at top level without an explicit storage class, are 185: 751: 244: 208:., which meant a storage which is always in existence. However, In B, there wasn't a 167: 611:
C#: Closures by default have all local and instance variables captured in it, the
669: 627: 492: 441: 24: 623: 464: 138:
about the use of the static keyword to declare class methods in C++ and Java.
484: 126: 432:
keyword for local variables to be kept across invocation include such as
551:
Static constructors in C#, which are run once before the class is used
544:
keyword in other places in a class declaration or usage, for example:
455:
The following programming languages with C-like syntax do not support
488: 437: 540:
Some programming languages even go further, allowing the use of
197: 522:
A static member of a class has the following characteristics:
449: 120: 18: 428:
Examples of programming languages which support the usage of
384:(C-family-specific) A variable declared with storage class 600:
PHP: Closures constructed in an instance method have the
677:. Murray Hill, New Jersey: Bell Laboratories. p. 4. 615:
keyword specifies that no outside states to be captured.
591:
keyword can be used in some programming languages on
499:
in Java for classes which can be used everywhere, or
49:. Unsourced material may be challenged and removed. 554:Static classes in C#, which can't be instantiated. 349:for all top-level declarations in a source file, 263:(visible to its own compilation unit only), or 235:C was developed as a successor of B, and the 8: 16:Reserved word in some programming languages 355:for variables declared in function bodies. 188:instead of an instance member in classes. 707:"Access Modifiers (C# Programming Guide)" 671:A TUTORIAL INTRODUCTION TO THE LANGUAGE B 604:reference automatically bound to it, the 557:Inner classes in Java implicitly carry a 400:in the first meaning but not the second. 220:keyword, which declared an variable with 109:Learn how and when to remove this message 269: 649:"MUL TIC SYSTEf·-1-PROGRAMMERS' MANUAL" 640: 232:, or implicitly as function arguments. 7: 196:In the predecessors of C, including 47:adding citations to reliable sources 663: 661: 536:reference for the current instance. 14: 204:, there was already a concept of 626: 125: 23: 416:As a storage duration specifier 317:none for block-scope variables 178:) and visibility (depending on 34:needs additional citations for 315:only) for top-level identifier 1: 392:Variables with storage class 739:"Static anonymous functions" 768:Java (programming language) 634:Computer programming portal 511:As a class member specifier 247:specifiers, alongside with 784: 689:"Storage-class specifiers" 212:keyword, but there was an 475:As a visibility specifier 459:local variables as in C: 295:external (whole program) 758:C (programming language) 359:So, in C, although the 721:"Late Static Bindings" 608:keyword prevents this. 243:keyword were added as 136:is missing information 172:programming languages 58:"Static" keyword 574:late static bindings 403:In C++ (not C), the 308:(program execution) 292:(program execution) 43:improve this article 593:anonymous functions 580:As a specifier for 184:), or to specify a 332:function execution 668:Kernighan, B. W. 340: 339: 159: 158: 119: 118: 111: 93: 775: 743: 742: 735: 729: 728: 717: 711: 710: 703: 697: 696: 693:cppreference.com 685: 679: 678: 676: 665: 656: 655: 653: 645: 636: 631: 630: 614: 607: 603: 590: 571: 564: 560: 543: 535: 518: 506: 502: 498: 482: 458: 431: 423: 411: 406: 399: 395: 387: 362: 354: 348: 328: 324: 313:translation unit 302: 286: 270: 265:external linkage 261:internal linkage 258: 252: 242: 238: 231: 227: 219: 215: 211: 164: 154: 151: 145: 129: 121: 114: 107: 103: 100: 94: 92: 51: 27: 19: 783: 782: 778: 777: 776: 774: 773: 772: 748: 747: 746: 737: 736: 732: 719: 718: 714: 705: 704: 700: 687: 686: 682: 674: 667: 666: 659: 651: 647: 646: 642: 632: 625: 622: 612: 605: 601: 588: 585: 569: 562: 558: 541: 533: 516: 513: 504: 500: 496: 480: 477: 456: 429: 421: 418: 409: 404: 397: 393: 385: 360: 352: 346: 326: 322: 316: 300: 284: 254: 248: 240: 236: 229: 225: 217: 213: 209: 194: 176:static variable 162: 155: 149: 146: 139: 130: 115: 104: 98: 95: 52: 50: 40: 28: 17: 12: 11: 5: 781: 779: 771: 770: 765: 760: 750: 749: 745: 744: 730: 712: 698: 680: 657: 639: 638: 637: 621: 618: 617: 616: 609: 584: 578: 577: 576: 566: 555: 552: 549: 538: 537: 530: 527: 512: 509: 476: 473: 417: 414: 390: 389: 382: 372: 371: 368: 357: 356: 350: 338: 337: 334: 329: 319: 318: 309: 303: 297: 296: 293: 287: 281: 280: 277: 274: 273:Storage class 206:static storage 193: 190: 157: 156: 133: 131: 124: 117: 116: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 780: 769: 766: 764: 761: 759: 756: 755: 753: 740: 734: 731: 726: 722: 716: 713: 708: 702: 699: 694: 690: 684: 681: 673: 672: 664: 662: 658: 650: 644: 641: 635: 629: 624: 619: 610: 599: 598: 597: 594: 583: 579: 575: 567: 556: 553: 550: 547: 546: 545: 531: 528: 525: 524: 523: 520: 510: 508: 494: 490: 486: 474: 472: 470: 466: 462: 453: 451: 447: 443: 439: 435: 426: 415: 413: 401: 383: 381: 377: 376: 375: 369: 366: 365: 364: 351: 345: 344: 343: 335: 333: 330: 321: 320: 314: 310: 307: 304: 299: 298: 294: 291: 288: 283: 282: 278: 275: 272: 271: 268: 266: 262: 257: 251: 246: 245:storage class 233: 223: 207: 203: 199: 191: 189: 187: 183: 182: 177: 173: 169: 168:reserved word 165: 153: 143: 137: 134:This article 132: 128: 123: 122: 113: 110: 102: 91: 88: 84: 81: 77: 74: 70: 67: 63: 60: –  59: 55: 54:Find sources: 48: 44: 38: 37: 32:This article 30: 26: 21: 20: 741:. Microsoft. 733: 724: 715: 709:. Microsoft. 701: 692: 683: 670: 643: 586: 573: 539: 521: 514: 478: 454: 427: 419: 402: 391: 379: 373: 358: 341: 264: 260: 234: 222:auto storage 221: 195: 186:class member 179: 161: 160: 147: 135: 105: 96: 86: 79: 72: 65: 53: 41:Please help 36:verification 33: 493:Objective-C 442:Objective-C 752:Categories 725:PHP Manual 485:namespaces 465:Javascript 311:internal ( 150:April 2014 69:newspapers 412:pointer. 276:Duration 142:talk page 99:June 2022 620:See also 582:closures 501:internal 327:register 279:Linkage 241:register 170:in many 507:in C#. 181:linkage 83:scholar 613:static 606:static 602:$ this 589:static 570:static 563:static 542:static 517:static 497:public 481:static 457:static 430:static 422:static 405:static 398:static 394:extern 386:static 361:static 347:extern 306:static 301:static 290:static 285:extern 256:extern 237:static 210:static 192:Origin 163:static 85:  78:  71:  64:  56:  675:(PDF) 652:(PDF) 336:none 230:extrn 214:extrn 166:is a 90:JSTOR 76:books 587:The 568:The 559:this 534:this 515:The 505:file 479:The 469:Dart 461:Java 420:The 410:this 353:auto 323:auto 253:and 250:auto 239:and 226:auto 218:auto 200:and 198:BCPL 62:news 763:C++ 489:C++ 450:PHP 438:C++ 45:by 754:: 723:. 691:. 660:^ 503:/ 491:, 467:, 463:, 452:. 448:, 446:C# 444:, 440:, 436:, 380:or 325:, 228:, 727:. 695:. 654:. 434:C 388:. 202:B 152:) 148:( 144:. 112:) 106:( 101:) 97:( 87:· 80:· 73:· 66:· 39:.

Index


verification
improve this article
adding citations to reliable sources
"Static" keyword
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message

talk page
reserved word
programming languages
static variable
linkage
class member
BCPL
B
static storage
storage class
auto
extern
static
static
translation unit
function execution
C
C++

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.