c语言中static说明是什么意思? 在C语言中static有什么含义

c\u8bed\u8a00\u4e2dstatic\u8bf4\u660e\u662f\u4ec0\u4e48\u610f\u601d?

static
\u7528\u6765\u8bf4\u660e\u9759\u6001\u53d8\u91cf\u3002

\u5982\u679c\u662f\u5728\u51fd\u6570\u5916\u9762\u5b9a\u4e49\u7684\uff0c\u90a3\u4e48\u5176\u6548\u679c\u548c\u5168\u5c40\u53d8\u91cf\u7c7b\u4f3c\uff0c\u4f46\u662f\uff0cstatic\u5b9a\u4e49\u7684\u53d8\u91cf\u53ea\u80fd\u5728\u5f53\u524dc\u7a0b\u5e8f\u6587\u4ef6\u4e2d\u4f7f\u7528\uff0c\u5728\u53e6\u4e00\u4e2ac\u4ee3\u7801\u91cc\u9762\uff0c\u5373\u4f7f\u4f7f\u7528extern\u5173\u952e\u8bcd\u4e5f\u4e0d\u80fd\u8bbf\u95ee\u8fd9\u4e2astatic\u53d8\u91cf\u3002

\u5982\u679c\u662f\u5728\u51fd\u6570\u5185\u90e8\u5b9a\u4e49\u7684\uff0c\u90a3\u4e48\u8fd9\u4e2a\u53d8\u91cf\u53ea\u521d\u59cb\u5316\u4e00\u6b21\uff0c\u5373\u4f7f\u518d\u6b21\u8c03\u7528\u8fd9\u4e2a\u51fd\u6570\uff0c\u8fd9\u4e2astatic\u53d8\u91cf\u4e5f\u4e0d\u4f1a\u518d\u6b21\u88ab\u521d\u59cb\u5316\uff0c\u4e8e\u662f\uff0c\u8fd9\u4e2a\u53d8\u91cf\u7684\u53d6\u503c\u5c31\u4f1a\u4e00\u76f4\u4fdd\u5b58\u7740\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5f53\u4f60\u518d\u6b21\u8c03\u7528\u8fd9\u4e2a\u51fd\u6570\u7684\u65f6\u5019\uff0c\u91cc\u9762\u7528\u5230\u8fd9\u4e2astatic\u53d8\u91cf\u65f6\uff0c\u5c31\u4f1a\u53d1\u73b0\uff0c\u8fd8\u662f\u5b83\u8fd8\u662f\u4e0a\u4e00\u6b21\u51fd\u6570\u8c03\u7528\u65f6\u7684\u7ed3\u679c\u3002

\u662f\u4e0d\u6b62\u4e00\u4e2a\u610f\u601d\uff0c\u8981\u770b\u7528\u5230\u54ea\u91cc\u3002\u6bd4\u5982\uff1a
static int a;
int b;
void func(void)
{
static int c;
int d;
}
\u5728\u8fd9\u91cc\uff0ca\u4e0eb\u90fd\u662f\u5168\u5c40\u53d8\u91cf\uff0c\u4e8c\u8005\u7684\u533a\u522b\u662f\uff0cb\u53ef\u4ee5\u88ab\u522b\u7684\u6587\u4ef6\u4f7f\u7528\uff0ca\u53ea\u80fd\u5728\u672c\u6587\u4ef6\u4e2d\u4f7f\u7528\uff0c\u8fd9\u662fstatic\u5bf9\u5168\u5c40\u53d8\u91cf\u7684\u4f5c\u7528\u3002
c\u548cd\u7684\u533a\u522b\u662f\uff0cd\u662f\u4e00\u4e2a\u81ea\u52a8\u53d8\u91cf\uff0cfunc\u51fd\u6570\u6267\u884c\u5b8c\u540e\uff0cd\u4f1a\u81ea\u52a8\u88ab\u91ca\u653e\u3002\u4f46c\u5374\u4e0d\u4f1a\u88ab\u91ca\u653e\uff0c\u4e0b\u4e00\u6b21\u8c03\u7528func\u51fd\u6570\u65f6\uff0cc\u7684\u503c\u4f1a\u4fdd\u7559\u4e0a\u6b21\u7684\u503c\u7ee7\u7eed\u4f7f\u7528\u3002

在C语言中,static关键字的作用如下:

1、在修饰变量的时,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 

2、static修饰全局变量的时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 

3、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。

扩展资料:

static关键字在C语言、C++、java中的作用有着相似之处,但也存在差异:

一、C++的static用法:

1、面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。

2、在类中,static可以用来修饰静态数据成员和静态成员方法 

静态数据成员 

(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。 

(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。 

(3)静态数据成员既可以通过对象名引用,也可以通过类名引用。

静态成员函数 

(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。 

(2)非静态成员函数有this指针,而静态成员函数没有this指针。 

(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。

二、java的static用法:

1、声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,但最好采用前者,因为后者容易混淆静态变量和一般变量。

2、声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。

参考资料来源:百度百科-static(计算机高级语言)



static 用来说明静态变量。

1、如果是在函数外面定义的,那么其效果和全局变量类似,即static说明的变量可以在当前c程序文件中使用。

2、如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,我们再次调用该函数时,仍是保存的上一次函数调用时保存的结果。

扩展资料:

c语言中的static有三个主要作用:

1、隐藏性。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

2、static可以保持变量内容的持久,当static定义变量在函数内部时,改变量值的生命周期和全局变量相同。

3、static可以令其定义变量内存区所有字节默认初始化为0,这一特点可以省去程序员许多麻烦,减少工作量。

参考资料来源:百度百科-Static(计算机高级语言)



  在VB,C#,C,C++,Java中可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用。
  static 函数内部函数和外部函数
  当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。
  内部函数(又称静态函数)
  如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。
  定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
  static 函数类型 函数名(函数参数表)
  {……}
  关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。
  使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
  外部函数:
  外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:
  [extern] 函数类型 函数名(函数参数表)
  {……}
  调用外部函数时,需要对其进行说明:
  [extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];
  [案例]外部函数应用。
  ⑴文件mainf.c
  main()
  { extern void input(…),process(…),output(…);
  input(…); process(…); output(…);
  }
  ⑵文件subf1.c
  ……
  extern void input(……) /*定义外部函数*/
  {……}
  ⑶文件subf2.c
  ……
  extern void process(……) /*定义外部 函数*/
  {……}
  ⑷文件subf3.c
  ……
  extern void output(……) /*定义外部函数*/
  {……}

static 用来说明静态变量。
如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。
如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,也就是说,当你再次调用这个函数的时候,里面用到这个static变量时,就会发现,还是它还是上一次函数调用时的结果。

是用来说明静态变量,一旦被声明就不在被初始化,你试下在外部定义,然后就在函数里用,然后在另一个函数里面用,这个变量就好像在共享的使用的感觉,呵呵,有同感吧?…

  • c璇█涓璼tatic璇存槑鏄粈涔鎰忔?
    绛旓細static 鐢ㄦ潵璇存槑闈欐佸彉閲銆1銆佸鏋滄槸鍦ㄥ嚱鏁板闈㈠畾涔夌殑锛岄偅涔堝叾鏁堟灉鍜屽叏灞鍙橀噺绫讳技锛屽嵆static璇存槑鐨勫彉閲忓彲浠ュ湪褰撳墠c绋嬪簭鏂囦欢涓娇鐢銆2銆佸鏋滄槸鍦ㄥ嚱鏁板唴閮ㄥ畾涔夌殑锛岄偅涔堣繖涓彉閲忓彧鍒濆鍖栦竴娆★紝鍗充娇鍐嶆璋冪敤杩欎釜鍑芥暟锛岃繖涓猻tatic鍙橀噺涔熶笉浼氬啀娆¤鍒濆鍖栵紝浜庢槸锛岃繖涓彉閲忕殑鍙栧煎氨浼氫竴鐩翠繚瀛樼潃锛屾垜浠啀娆¤皟鐢ㄨ鍑芥暟鏃...
  • c璇█涓璼tatic鏄粈涔鎰忔(static鍦╟璇█涓槸浠涔堟剰鎬濇槸鐢ㄤ粈涔堣緭鍑)
    绛旓細static鐢ㄦ潵璇存槑闈欐佸彉閲銆傚鏋滄槸鍦ㄥ嚱鏁板闈㈠畾涔夌殑锛岄偅涔堝叾鏁堟灉鍜屽叏灞鍙橀噺绫讳技锛屽嵆static璇存槑鐨勫彉閲忓彲浠ュ湪褰撳墠c绋嬪簭鏂囦欢涓娇鐢銆傚鏋滄槸鍦ㄥ嚱鏁板唴閮ㄥ畾涔夌殑锛岄偅涔堣繖涓彉閲忓彧鍒濆鍖栦竴娆★紝鍗充娇鍐嶆璋冪敤杩欎釜鍑芥暟锛岃繖涓猻tatic鍙橀噺涔熶笉浼氬啀娆¤鍒濆鍖栵紝浜庢槸锛岃繖涓彉閲忕殑鍙栧煎氨浼氫竴鐩翠繚瀛樼潃锛屾垜浠啀娆¤皟鐢ㄨ鍑芥暟鏃讹紝浠嶆槸淇濆瓨...
  • C璇█缂栫▼涓static鈥鏄粈涔鎰忔?
    绛旓細1) 鍦ㄥ嚱鏁颁綋锛屼竴涓澹版槑涓洪潤鎬鐨鍙橀噺鍦ㄨ繖涓鍑芥暟琚皟鐢ㄨ繃绋嬩腑缁存寔鍏跺间笉鍙樸2) 鍦ㄦā鍧楀唴锛堜絾鍦ㄥ嚱鏁颁綋澶栵級锛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍙互琚ā鍧楀唴鎵鐢ㄥ嚱鏁拌闂紝浣嗕笉鑳借妯″潡澶栧叾瀹冨嚱鏁拌闂傚畠鏄竴涓湰鍦扮殑鍏ㄥ眬鍙橀噺銆3) 鍦ㄦā鍧楀唴锛屼竴涓澹版槑涓洪潤鎬佺殑鍑芥暟鍙彲琚繖涓妯″潡鍐呯殑鍏跺畠鍑芥暟璋冪敤銆傞偅灏...
  • c璇█涓殑static鏄粈涔鎰忔?
    绛旓細static鍦╟璇█涓槸绉佹湁銆侀潤鎬佹剰鎬銆傜敤浜庡湪鍑芥暟涓0鏄庘滈潤鎬佸彉閲忊濈敤锛屽湪姣忎竴娆¤皟鐢ㄥ悗锛岃鍙橀噺骞朵笉鍦ㄥ嚱鏁拌繑鍥炴椂绔嬪嵆閲婃斁锛屽彉閲忎腑淇濆瓨鐨勫硷紝鍙互淇濈暀鍒颁笅涓娆¤皟鐢ㄦ椂缁х画鏈夋晥銆傜鏈夊氨鏄殣钘忋俿tatic鍑芥暟鍙兘澹版槑鍚庣殑鏈枃涓皟鐢ㄣ俿tatic鍏ㄥ眬鍙橀噺鍙兘澹版槑鍚庣殑鏈枃涓皟鐢ㄣ俿tatic灞閮ㄥ彉閲忓彧鑳藉0鏄庡悗鐨勬湰鍑芥暟璋冪敤 闈欐...
  • static鍦c璇█涓浠h〃浠涔
    绛旓細鍦–璇█涓紝`static`鏄竴涓叧閿瓧锛岀敤浜庝慨楗板彉閲忋佸嚱鏁板拰浠g爜鍧銆傚畠鏈変互涓嬪嚑绉嶅惈涔夛細淇グ鍙橀噺锛氬綋涓涓彉閲忚澹版槑涓篳static`鏃讹紝瀹冧細鍦ㄨ绋嬪簭鐨勪綔鐢ㄥ煙鍐呰瀛樺偍锛岃屼笉鏄湪鍫嗘爤涓娿傝繖鎰忓懗鐫璇ュ彉閲忓彲浠ュ湪绋嬪簭鐨勫涓嚱鏁颁箣闂村叡浜紝骞朵笖涓嶄細鍥犱负鍑芥暟鐨勮皟鐢ㄨ屼涪澶便備慨楗板嚱鏁帮細褰撲竴涓嚱鏁拌澹版槑涓篳static`鏃...
  • Static鏄粈涔鎰忔濆晩,鍦C绋嬪簭閲岄潰
    绛旓細澶栭儴鍑芥暟鐨勫畾涔夛細鍦ㄥ畾涔夊嚱鏁版椂锛屽鏋滄病鏈夊姞鍏抽敭瀛椻static鈥濓紝鎴栧啝浠ュ叧閿瓧鈥渆xtern鈥濓紝琛ㄧず姝ゅ嚱鏁版槸澶栭儴鍑芥暟锛歔extern] 鍑芥暟绫诲瀷 鍑芥暟鍚嶏紙鍑芥暟鍙傛暟琛級{鈥︹ 璋冪敤澶栭儴鍑芥暟鏃讹紝闇瑕佸鍏惰繘琛璇存槑锛歔extern] 鍑芥暟绫诲瀷 鍑芥暟鍚嶏紙鍙傛暟绫诲瀷琛級[锛屽嚱鏁板悕2锛堝弬鏁扮被鍨嬭〃2锛夆︹锛涗簩銆C璇█鏄涓闂ㄩ潰鍚戣繃绋...
  • c璇█鐨剆tatic浠涔鎰忔
    绛旓細鍦C璇█涓锛static鏄涓涓叧閿瓧锛屽畠鏈夊绉嶅惈涔夊拰鐢ㄦ硶锛屽叿浣撳彇鍐充簬瀹冨湪鍝噷鍜屽浣曡浣跨敤銆備互涓嬫槸static鐨勪富瑕佺敤娉曪細闈欐佸眬閮ㄥ彉閲忥細c`void func() {static int count = 0;count++;printf("%d\n", count);}`姣忔璋冪敤func()鏃讹紝count鐨勫奸兘浼氬鍔狅紝鍥犱负count鐨勭敓鍛藉懆鏈熷湪鍑芥暟璋冪敤涔嬮棿鎸佺画瀛樺湪銆傚綋...
  • static鍦c璇█涓槸浠涔鎰忔
    绛旓細鏄惁浼氫笌鍏跺畠鏂囦欢涓鐨鍑芥暟鍚屽悕銆傚叧閿瓧static 鏈夌潃涓嶅甯哥殑鍘嗗彶銆傝捣鍒濓紝鍦C 涓紩鍏ュ叧閿瓧static 鏄负浜嗚〃绀洪鍑轰竴涓潡鍚庝粛鐒跺瓨鍦ㄧ殑灞閮ㄥ彉閲忋傞殢鍚庯紝static 鍦– 涓湁浜嗙浜岀鍚箟锛氱敤鏉ヨ〃绀轰笉鑳借鍏跺畠鏂囦欢璁块棶鐨勫叏灞鍙橀噺鍜屽嚱鏁般備负浜嗛伩鍏嶅紩鍏ユ柊鐨勫叧閿瓧锛屾墍浠ヤ粛浣跨敤static 鍏抽敭瀛楁潵琛ㄧず杩欑浜岀鍚箟銆
  • c璇█閲岀殑static鍜宎uto鏄粈涔鎰忔?
    绛旓細鍦C璇█涓锛static鍜宎uto鏄袱涓叧閿瘝锛屽畠浠垎鍒〃绀洪潤鎬佸拰鑷姩鐨勬剰鎬濄俿tatic锛氳繖涓叧閿瘝鐢ㄤ簬淇グ鍙橀噺鎴栧嚱鏁般傚綋瀹冧慨楗板彉閲忔椂锛岃〃绀鸿繖涓彉閲忔槸闈欐佺殑锛屼篃灏辨槸璇达紝杩欎釜鍙橀噺鐨勭敓鍛藉懆鏈熻寤堕暱鑷崇▼搴忚繍琛屾湡闂达紝鑰屼笉鏄彧鍦ㄥ嚱鏁版墽琛屾湡闂村瓨鍦ㄣ傚綋瀹冧慨楗板嚱鏁版椂锛岃〃绀鸿繖涓嚱鏁版槸闈欐佺殑锛屼篃灏辨槸璇达紝杩欎釜鍑芥暟鍙湪鏈...
  • Static鏄粈涔鎰忔濆晩,鍦C绋嬪簭閲岄潰
    绛旓細static 鍑芥暟鍐呴儴鍑芥暟鍜屽閮ㄥ嚱鏁 褰撲竴涓簮绋嬪簭鐢卞涓簮鏂囦欢缁勬垚鏃讹紝C璇█鏍规嵁鍑芥暟鑳藉惁琚叾瀹冩簮鏂囦欢涓殑鍑芥暟璋冪敤锛屽皢鍑芥暟鍒嗕负鍐呴儴鍑芥暟鍜屽閮ㄥ嚱鏁般傚唴閮ㄥ嚱鏁 锛堝張绉伴潤鎬佸嚱鏁帮級濡傛灉鍦ㄤ竴涓簮鏂囦欢涓畾涔夌殑鍑芥暟锛屽彧鑳借鏈枃浠朵腑鐨勫嚱鏁拌皟鐢紝鑰屼笉鑳借鍚屼竴绋嬪簭鍏跺畠鏂囦欢涓殑鍑芥暟璋冪敤锛岃繖绉嶅嚱鏁扮О涓哄唴閮ㄥ嚱鏁般傚畾涔変竴涓...
  • 扩展阅读:c语言中static的作用 举例 ... c语言static是常量吗 ... c语言中static例子 ... c语言static有什么用 ... static int是什么意思 ... static int的值会变吗 ... c语言中static int ... static在c语言中的用法 ... 在c语言中什么意思 static ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网