c语言的static什么意思

在C语言中,static是一个关键字,它有多种含义和用法,具体取决于它在哪里和如何被使用。以下是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(……) /*定义外部函数*/
  {……}

  • C璇█缂栫▼涓static鈥濇槸浠涔堟剰鎬?
    绛旓細1) 鍦ㄥ嚱鏁颁綋锛屼竴涓澹版槑涓洪潤鎬鐨鍙橀噺鍦ㄨ繖涓鍑芥暟琚皟鐢ㄨ繃绋嬩腑缁存寔鍏跺间笉鍙樸2) 鍦ㄦā鍧楀唴锛堜絾鍦ㄥ嚱鏁颁綋澶栵級锛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍙互琚ā鍧楀唴鎵鐢ㄥ嚱鏁拌闂紝浣嗕笉鑳借妯″潡澶栧叾瀹冨嚱鏁拌闂傚畠鏄竴涓湰鍦扮殑鍏ㄥ眬鍙橀噺銆3) 鍦ㄦā鍧楀唴锛屼竴涓澹版槑涓洪潤鎬佺殑鍑芥暟鍙彲琚繖涓妯″潡鍐呯殑鍏跺畠鍑芥暟璋冪敤銆傞偅灏...
  • C璇█涓璼tatic鏄仛浠涔鐢ㄧ殑?
    绛旓細鏈変袱绉嶇敤娉曪細1銆static淇グ灞閮ㄥ彉閲忥紝鎴愪负涓涓眬閮ㄩ潤鎬佸彉閲忋俿tatic淇グ灞閮ㄥ彉閲(闈欐佸眬閮ㄥ彉閲)涓庢櫘閫氬眬閮ㄥ彉閲忕浉姣旓紝瀹冪殑浼樺娍鍦ㄤ簬锛氣憼闈欐佸眬閮ㄥ彉閲忎綔鐢ㄥ煙涓庤繛鎺ュ睘鎬т笌鏅氬眬閮ㄥ彉閲忎竴鏍凤紱鈶″瓨鍌ㄧ被锛氶潤鎬佸眬閮ㄥ彉閲忓垎閰嶅湪data/bss娈碉紝鏅氬眬閮ㄥ彉閲忓湪鏍堜笂锛涒憿鐢熷懡鍛ㄦ湡锛氬洜涓哄瓨鍌ㄧ被鐨勪笉鍚岋紝闈欐佸眬閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡...
  • c璇█涓璼tatic璇存槑鏄浠涔堟剰鎬 c璇█涓璼tatic璇存槑鐨勫惈涔
    绛旓細1銆佸鏋滄槸鍦ㄥ嚱鏁板闈㈠畾涔鐨锛岄偅涔堝叾鏁堟灉鍜屽叏灞鍙橀噺绫讳技锛屽嵆static璇存槑鐨勫彉閲忓彲浠ュ湪褰撳墠c绋嬪簭鏂囦欢涓娇鐢ㄣ2銆佸鏋滄槸鍦ㄥ嚱鏁板唴閮ㄥ畾涔夌殑锛岄偅涔堣繖涓彉閲忓彧鍒濆鍖栦竴娆★紝鍗充娇鍐嶆璋冪敤杩欎釜鍑芥暟锛岃繖涓猻tatic鍙橀噺涔熶笉浼氬啀娆¤鍒濆鍖栵紝浜庢槸锛岃繖涓彉閲忕殑鍙栧煎氨浼氫竴鐩翠繚瀛樼潃锛屾垜浠啀娆¤皟鐢ㄨ鍑芥暟鏃讹紝浠嶆槸淇濆瓨鐨勪笂涓娆″嚱鏁...
  • Static鏄粈涔堟剰鎬鍟,鍦C绋嬪簭閲岄潰
    绛旓細缂栬緫鏈C涓殑static鍑芥暟 鍒嗙被 static 鍑芥暟鍐呴儴鍑芥暟鍜屽閮ㄥ嚱鏁 褰撲竴涓簮绋嬪簭鐢卞涓簮鏂囦欢缁勬垚鏃讹紝C璇█鏍规嵁鍑芥暟鑳藉惁琚叾瀹冩簮鏂囦欢涓殑鍑芥暟璋冪敤锛屽皢鍑芥暟鍒嗕负鍐呴儴鍑芥暟鍜屽閮ㄥ嚱鏁般傚唴閮ㄥ嚱鏁 锛堝張绉伴潤鎬佸嚱鏁帮級濡傛灉鍦ㄤ竴涓簮鏂囦欢涓畾涔夌殑鍑芥暟锛屽彧鑳借鏈枃浠朵腑鐨勫嚱鏁拌皟鐢紝鑰屼笉鑳借鍚屼竴绋嬪簭鍏跺畠鏂囦欢涓殑鍑芥暟璋冪敤锛...
  • C璇█static鍙橀噺浠涔堟剰鎬?
    绛旓細杩欎釜鍙橀噺鐨瀛樺偍绫诲瀷搴旇琚鏄庝负鈥滈潤鎬佸彉閲忊濄傜浉鍏充粙缁嶏細瀵逛簬闈欐佸叏灞鍙橀噺鏉ヨ锛岄拡瀵规煇涓婧愭枃浠剁殑浠static澹版槑鐨勬枃浠剁骇鍙橀噺涓庡嚱鏁扮殑浣滅敤鍩熷彧闄愪簬鏂囦欢鍐咃紙鍙湪鏂囦欢鍐呭彲瑙侊級锛屼篃鍗斥滃唴閮ㄨ繛鎺モ,鍥犺屽彲浠ョ敤鏉ラ檺瀹氬彉閲忕殑浣滅敤鍩熴傞潤鎬佸彉閲忎篃鍙互鐢ㄤ簬瀛樺偍甯告暟銆傚叿浣撴潵璇达紝闈欐佸彉閲忥紙鍏ㄥ眬鍙橀噺鍙婃眹缂璇█閲屽畾涔夌殑绗﹀彿...
  • C璇█涓璼tatic鏄仛浠涔鐢ㄧ殑?
    绛旓細鏈変袱绉嶇敤娉曪細1銆static淇グ灞閮ㄥ彉閲忥紝鎴愪负涓涓眬閮ㄩ潤鎬佸彉閲忋俿tatic淇グ灞閮ㄥ彉閲(闈欐佸眬閮ㄥ彉閲)涓庢櫘閫氬眬閮ㄥ彉閲忕浉姣旓紝瀹冪殑浼樺娍鍦ㄤ簬锛氣憼闈欐佸眬閮ㄥ彉閲忎綔鐢ㄥ煙涓庤繛鎺ュ睘鎬т笌鏅氬眬閮ㄥ彉閲忎竴鏍凤紱鈶″瓨鍌ㄧ被锛氶潤鎬佸眬閮ㄥ彉閲忓垎閰嶅湪data/bss娈碉紝鏅氬眬閮ㄥ彉閲忓湪鏍堜笂锛涒憿鐢熷懡鍛ㄦ湡锛氬洜涓哄瓨鍌ㄧ被鐨勪笉鍚岋紝闈欐佸眬閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡...
  • 鍦C璇█涓璼tatic鏈浠涔堝惈涔
    绛旓細鏄笉姝竴涓鎰忔锛岃鐪嬬敤鍒板摢閲屻傛瘮濡傦細static int a;int b;void func(void){ static int c;int d;} 鍦ㄨ繖閲岋紝a涓巄閮芥槸鍏ㄥ眬鍙橀噺锛屼簩鑰呯殑鍖哄埆鏄紝b鍙互琚埆鐨勬枃浠朵娇鐢紝a鍙兘鍦ㄦ湰鏂囦欢涓娇鐢紝杩欐槸static瀵瑰叏灞鍙橀噺鐨勪綔鐢ㄣ俢鍜宒鐨勫尯鍒槸锛宒鏄竴涓嚜鍔ㄥ彉閲忥紝func鍑芥暟鎵ц瀹屽悗锛宒浼氳嚜鍔ㄨ閲婃斁銆
  • 璁$畻鏈C璇█涓殑鍏抽敭瀛:static鏄粈涔堟剰鎬?
    绛旓細闈欐佹垚鍛樺彉閲 鐨勪慨楗扮
  • C璇█涓璼tatic鏄仛浠涔鐢ㄧ殑?
    绛旓細鏈夋椂鍊欏笇鏈涘嚱鏁涓殑灞閮ㄥ彉閲忕殑鍊煎湪鍑芥暟璋冪敤缁撴潫鍚庝笉娑堝け鑰屼繚鐣欏師鍊硷紝鍗冲叾鍗犵敤鐨勫瓨鍌ㄥ崟鍏冧笉閲婃斁锛屽湪涓嬫璇ュ嚱鏁拌皟鐢ㄦ椂锛岃鍙橀噺淇濈暀涓婁竴娆″嚱鏁拌皟鐢ㄧ粨鏉熸椂鐨勫笺傝繖鏃跺氨搴旇鎸囧畾灞閮ㄥ彉閲忎负闈欐佸眬閮ㄥ彉閲忥紝渚嬪瓙濡備笅锛歩nclude<iostream> using namespace std;int f(int a ){ auto int b=0;static int c=3;b=...
  • c璇█涓璼tatic鍏抽敭瀛
    绛旓細C++闈㈠悜杩囩▼鐨剆tatic鍜C鐨鏄竴鏍风殑銆 C++鐨剆tatic鏈変袱绉嶇敤娉曪細闈㈠悜杩囩▼绋嬪簭璁捐涓殑static鍜岄潰鍚戝璞$▼搴忚璁′腑鐨剆tatic銆傚墠鑰呭簲鐢ㄤ簬鏅氬彉閲忓拰鍑芥暟锛屼笉娑夊強绫伙紱鍚庤呬富瑕佽鏄巗tatic鍦ㄧ被涓殑浣滅敤銆備竴銆侀潰鍚戣繃绋嬭璁′腑鐨剆tatic 1銆侀潤鎬佸叏灞鍙橀噺 鍦ㄥ叏灞鍙橀噺鍓嶏紝鍔犱笂鍏抽敭瀛梥tatic锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓涓潤鎬...
  • 扩展阅读:c语言static的用法 ... c语言中static解释 ... c语言extern的用法 ... static int的值会变吗 ... c语言static有什么用 ... c语言static经典例子 ... c语言static是常量吗 ... static在c语言中的用法 ... c语言中static是什么功能 ...

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