c语言的static与函数变量 关于c语言auto变量和static变量区别

C\u8bed\u8a00\u4e2d \u5728\u4e00\u4e2a\u51fd\u6570\u4e2d\u7528 static\u4fee\u9970\u7684\u53d8\u91cf\uff0c\u8fd8\u80fd\u7ed9\u5b83\u8d4b\u4e0a\u65b0\u503c\u5417\uff1f

\u53ef\u4ee5\uff0cstatic\u5728C\u8bed\u8a00\u4e2d\u662f\u8868\u793a\u4e00\u4e2a\u53d8\u91cf\u4e3a\u9759\u6001\u53d8\u91cf\u7684\uff0c\u800c\u4e0d\u662f\u5e38\u91cf\uff0c\u4e5f\u4e0d\u662f\u4e0d\u53ef\u53d8\u7684\u53d8\u91cf\u3002\u6240\u8c13\u7684\u9759\u6001\u53d8\u91cf\u6709\u4e24\u79cd\u60c5\u51b5\uff0c\u4e00\u79cd\u662f\u9759\u6001\u5168\u5c40\u53d8\u91cf\uff0c\u4e00\u79cd\u662f\u9759\u6001\u5c40\u90e8\u53d8\u91cf\u3002
\u50cf\u5728VB\uff0cC#\uff0cC\uff0cC++\uff0cJava\uff0cPHP\uff0cObjective-C\uff0cJavaScript\u4e2d\u6211\u4eec\u53ef\u4ee5\u770b\u5230static\u4f5c\u4e3a\u5173\u952e\u5b57\u548c\u51fd\u6570\u51fa\u73b0\uff0c\u5728\u5176\u4ed6\u7684\u9ad8\u7ea7\u8ba1\u7b97\u673a\u8bed\u8a00\u5982FORTRAN\u3001ALGOL\u3001COBOL\u3001BASIC\u3001LISP\u3001SNOBOL\u3001PL/1\u3001Pascal\u3001PROLOG\u3001Ada\u7b49\u8bed\u8a00\u4e2d\u4e5f\u662f\u6709\u51fa\u73b0\u7684\uff0c\u53ea\u662f\u6709\u7740\u4e0d\u540c\u7684\u4f5c\u7528\uff0c\u5bf9\u4e8e\u5176\u5177\u4f53\u4f5c\u7528\uff0c\u8bfb\u8005\u6709\u9700\u8981\u7684\u65f6\u5019\u662f\u53ef\u4ee5\u5177\u4f53\u67e5\u9605\u7684\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u9759\u6001\u5168\u5c40\u53d8\u91cf\u6709\u4ee5\u4e0b\u7279\u70b9\uff1a
\u8be5\u53d8\u91cf\u5728\u5168\u5c40\u6570\u636e\u533a\u5206\u914d\u5185\u5b58\uff1b\u672a\u7ecf\u521d\u59cb\u5316\u7684\u9759\u6001\u5168\u5c40\u53d8\u91cf\u4f1a\u88ab\u7a0b\u5e8f\u81ea\u52a8\u521d\u59cb\u5316\u4e3a0\uff08\u5728\u51fd\u6570\u4f53\u5185\u58f0\u660e\u7684\u81ea\u52a8\u53d8\u91cf\u7684\u503c\u662f\u968f\u673a\u7684\uff0c\u9664\u975e\u5b83\u88ab\u663e\u5f0f\u521d\u59cb\u5316\uff0c\u800c\u5728\u51fd\u6570\u4f53\u5916\u88ab\u58f0\u660e\u7684\u81ea\u52a8\u53d8\u91cf\u4e5f\u4f1a\u88ab\u521d\u59cb\u5316\u4e3a0\uff09\uff1b
\u9759\u6001\u5168\u5c40\u53d8\u91cf\u5728\u58f0\u660e\u5b83\u7684\u6574\u4e2a\u6587\u4ef6\u90fd\u662f\u53ef\u89c1\u7684\uff0c\u800c\u5728\u6587\u4ef6\u4e4b\u5916\u662f\u4e0d\u53ef\u89c1\u7684\uff1b\u9759\u6001\u53d8\u91cf\u90fd\u5728\u5168\u5c40\u6570\u636e\u533a\u5206\u914d\u5185\u5b58\uff0c\u5305\u62ec\u540e\u9762\u5c06\u8981\u63d0\u5230\u7684\u9759\u6001\u5c40\u90e8\u53d8\u91cf\u3002

\u81ea\u52a8\u53d8\u91cf(auto\u53d8\u91cf)\u548c\u9759\u6001\u53d8\u91cf(static\u53d8\u91cf)\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u70b9\u533a\u522b\uff1a
1\u3001static\u53d8\u91cf\u5b58\u653e\u5728\u9759\u6001\u5b58\u50a8\u533a\uff0c\u5728\u7a0b\u5e8f\u6574\u4e2a\u8fd0\u884c\u671f\u95f4\u90fd\u4e0d\u91ca\u653e\uff1b\u800cauto\u53d8\u91cf\u5b58\u653e\u5728\u52a8\u6001\u5b58\u50a8\u533a\uff0c\u968f\u7740\u751f\u547d\u5468\u671f\u7684\u7ed3\u675f\u800c\u7acb\u5373\u91ca\u653e\u3002
2\u3001static\u53d8\u91cf\u53ea\u8d4b\u503c\u4e00\u6b21\uff0c\u4ee5\u540e\u5c31\u4e0d\u7528\u8d4b\u503c\uff1b\u800cauto\u53d8\u91cf\u5728\u51fd\u6570\u6bcf\u8c03\u7528\u4e00\u6b21\u90fd\u8981\u8d4b\u521d\u503c\u3002
3\u3001\u5982\u679c\u7528\u6237\u4e0d\u5bf9static\u53d8\u91cf\u8d4b\u521d\u503c\uff0c\u5219\u9ed8\u8ba4\u4e3a0\u6216'\0'\uff1b\u800cauto\u53d8\u91cf\u4e3a\u4e0d\u786e\u5b9a\u503c\u3002

\u6269\u5c55\u8d44\u6599\uff1a
auto\u53d8\u91cf
\u81ea\u52a8\u53d8\u91cf\uff08Automatic Variable\uff09\u6307\u7684\u662f\u5c40\u90e8\u4f5c\u7528\u57df\u53d8\u91cf\uff0c\u5177\u4f53\u6765\u8bf4\u5373\u662f\u5728\u63a7\u5236\u6d41\u8fdb\u5165\u53d8\u91cf\u4f5c\u7528\u57df\u65f6\u7cfb\u7edf\u81ea\u52a8\u4e3a\u5176\u5206\u914d\u5b58\u50a8\u7a7a\u95f4\uff0c\u5e76\u5728\u79bb\u5f00\u4f5c\u7528\u57df\u65f6\u91ca\u653e\u7a7a\u95f4\u7684\u4e00\u7c7b\u53d8\u91cf\u3002
\u5728\u8bb8\u591a\u7a0b\u5e8f\u8bed\u8a00\u4e2d\uff0c\u81ea\u52a8\u53d8\u91cf\u4e0e\u672f\u8bed\u201c\u5c40\u90e8\u53d8\u91cf\u201d\uff08Local Variable\uff09\u6240\u6307\u7684\u53d8\u91cf\u5b9e\u9645\u4e0a\u662f\u540c\u4e00\u79cd\u53d8\u91cf\uff0c\u6240\u4ee5\u901a\u5e38\u60c5\u51b5\u4e0b\u201c\u81ea\u52a8\u53d8\u91cf\u201d\u4e0e\u201c\u5c40\u90e8\u53d8\u91cf\u201d\u662f\u540c\u4e49\u7684\u3002
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-\u81ea\u52a8\u53d8\u91cf

你在函数中定义static变量,在定义的时候须得给他赋值,而且在程序运行中,只有第一次调这个函数时你所赋的值才有效果,之后每次调此函数,都不会重新给他赋值了(例如staitc a = 10,下次跑这个函数时不会跑这句话了。)。不过你可以在函数中改变这个值,并且这个值会被保留下来,当你下次调这个函数的时候,得到的值会是你最后给变量所赋的值。
static 变量 是可以改变的。只是在初始化时候只会赋值一次而已。。。比如你在一个函数里定义 X 变量,那么你每次调这个函数都会去定义这个变量吧,但是如果你把 X 定义为 static 类型,那么你只会第一次掉它的时候会去定义它,后面调这个函数时,X 变量就已经存在了不会再去定义。但是它的值还是可以改变的。你可以通过赋值语句改变static变量的值 .

关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
•; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
•; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
•; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

例子可以参考我的下面URL


可以 呀,静态变量只是只能第一次定义有效,因为在这一次就确定了存储空间,但是后面可以改变这段空间中的值,就是重新赋值是允许的。

关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: ; 在函数体,一个被声明为静态的变量在这一

  • C璇█涓彉閲瀛樺偍static鍜extern涓や釜鍏抽敭瀛楃殑浣滅敤鍒嗗埆鏄粈涔
    绛旓細閭d箞鍦╢ile2.c鏄棤娉曡闂埌鍙橀噺a鐨勩傚師鍥犲湪浜庣敤static瀵瑰叏灞鍙橀噺杩涜淇グ鏀瑰彉浜嗗叾浣滅敤鍩熺殑鑼冨洿锛岀敱鍘熸潵鐨勬暣涓伐绋嬪彲瑙佸彉涓烘湰婧愭枃浠跺彲瑙併(3)淇グ鍑芥暟 鐢╯tatic淇グ鍑芥暟鐨勮瘽锛屾儏鍐典笌淇グ鍏ㄥ眬鍙橀噺澶у悓灏忓紓锛屽氨鏄敼鍙樹簡鍑芥暟鐨勪綔鐢ㄥ煙銆俥xtern鍏抽敭瀛 鍦C璇█涓锛屼慨楗扮extern鐢ㄥ湪鍙橀噺鎴栬呭嚱鏁扮殑澹版槑鍓嶏紝鐢ㄦ潵璇存槑...
  • c璇█閲鐨剆tatic鍜auto鏄粈涔堟剰鎬?
    绛旓細鍦C璇█涓锛static鍜auto鏄袱涓叧閿瘝锛屽畠浠垎鍒〃绀洪潤鎬佸拰鑷姩鐨勬剰鎬濄俿tatic锛氳繖涓叧閿瘝鐢ㄤ簬淇グ鍙橀噺鎴鍑芥暟銆傚綋瀹冧慨楗板彉閲忔椂锛岃〃绀鸿繖涓彉閲忔槸闈欐佺殑锛屼篃灏辨槸璇达紝杩欎釜鍙橀噺鐨勭敓鍛藉懆鏈熻寤堕暱鑷崇▼搴忚繍琛屾湡闂达紝鑰屼笉鏄彧鍦ㄥ嚱鏁版墽琛屾湡闂村瓨鍦ㄣ傚綋瀹冧慨楗板嚱鏁版椂锛岃〃绀鸿繖涓嚱鏁版槸闈欐佺殑锛屼篃灏辨槸璇达紝杩欎釜鍑芥暟鍙湪鏈...
  • c璇█涓璼tatic璇存槑鏄粈涔堟剰鎬?
    绛旓細鍦C璇█涓锛static鍏抽敭瀛楃殑浣滅敤濡備笅锛1銆佸湪淇グ鍙橀噺鐨勬椂锛宻tatic淇グ鐨勯潤鎬佸眬閮ㄥ彉閲忓彧鎵ц涓娆★紝鑰屼笖寤堕暱浜嗗眬閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡锛岀洿鍒扮▼搴忚繍琛岀粨鏉熶互鍚庢墠閲婃斁銆2銆乻tatic淇グ鍏ㄥ眬鍙橀噺鐨勬椂锛岃繖涓叏灞鍙橀噺鍙兘鍦ㄦ湰鏂囦欢涓闂紝涓嶈兘鍦ㄥ叾瀹冩枃浠朵腑璁块棶锛屽嵆渚挎槸extern澶栭儴澹版槑涔熶笉鍙互銆3銆乻tatic淇グ涓涓鍑芥暟锛屽垯杩欎釜...
  • 姹c璇█涓璼tatic鐨勭敤娉,浠涔堟椂鍊欏畾涔夎鍔犱笂浠栧晩?
    绛旓細涓嬮潰鏄疌++涓璼tatic鐨勭敤娉,C璇腑绫讳技,鍙槸娌℃湁涓嶇敤绠′笌绫荤浉鍏崇殑.C++鐨剆tatic鏈変袱绉嶇敤娉:闈㈠悜杩囩▼绋嬪簭璁捐涓鐨剆tatic鍜闈㈠悜瀵硅薄绋嬪簭璁捐涓殑static銆傚墠鑰呭簲鐢ㄤ簬鏅鍙橀噺鍜屽嚱鏁,涓嶆秹鍙婄被;鍚庤呬富瑕佽鏄巗tatic鍦ㄧ被涓殑浣滅敤銆 涓銆侀潰鍚戣繃绋嬭璁′腑鐨剆tatic 1銆侀潤鎬佸叏灞鍙橀噺 鍦ㄥ叏灞鍙橀噺鍓,鍔犱笂鍏抽敭瀛梥tatic,璇ュ彉閲忓氨琚畾涔夋垚...
  • C璇█static鍙橀噺浠涔堟剰鎬?
    绛旓細杩欎釜鍙橀噺鐨勫瓨鍌ㄧ被鍨嬪簲璇ヨ璇存槑涓衡滈潤鎬佸彉閲忊濄傜浉鍏充粙缁嶏細瀵逛簬闈欐佸叏灞鍙橀噺鏉ヨ锛岄拡瀵规煇涓婧愭枃浠剁殑浠static澹版槑鐨勬枃浠剁骇鍙橀噺涓庡嚱鏁鐨勪綔鐢ㄥ煙鍙檺浜庢枃浠跺唴锛堝彧鍦ㄦ枃浠跺唴鍙锛夛紝涔熷嵆鈥滃唴閮ㄨ繛鎺モ,鍥犺屽彲浠ョ敤鏉ラ檺瀹氬彉閲忕殑浣滅敤鍩熴傞潤鎬佸彉閲忎篃鍙互鐢ㄤ簬瀛樺偍甯告暟銆傚叿浣撴潵璇达紝闈欐佸彉閲忥紙鍏ㄥ眬鍙橀噺鍙婃眹缂璇█閲屽畾涔夌殑绗﹀彿...
  • c璇█鑷繁鍐欑殑澶存枃浠堕噷闈鐨勫嚱鏁瀹氫箟涓轰粈涔堣鍔static?
    绛旓細濡傛灉涓嶅姞staic鐨勮瘽锛屽ご鏂囦欢涓殑鍚屼竴涓鍑芥暟灏辩浉褰撲簬鍦ㄦ暣涓▼搴忎腑琚畾涔変簡澶氭锛屾墍浠ヨ偗瀹氫細鎶ラ敊銆static浼氭妸瀹冨畾涔変负鏈湴鍑芥暟锛屽皢鍏朵綔鐢ㄥ煙闄愬埗鍦ㄦ湰鏂囦欢鍐咃紝鎵浠ラ渶瑕佸姞涓妔tatic鍏抽敭瀛椼傚鏋滀笉鍔爏tatic鐨勮瘽锛屽彲浠ョ敤瀹忓畾涔夌殑鏂瑰紡瀹炵幇鐨勶紝鐒跺悗鍦ㄦ瘡涓枃浠朵腑浣跨敤#ifdef鍜#ifndef浠ュ強#endif~...
  • C璇█涓璼tatic鍑芥暟鐨勫叿浣撲綔鐢ㄦ槸浠涔?
    绛旓細C璇█涓璼tatic鍑芥暟鐨勫叿浣撲綔鐢ㄦ槸锛氳涓涓鍙橀噺闀挎湡鏈夋晥锛岃屼笉绠″叾鏄湪浠涔堝湴鏂硅鐢虫槑銆傞伩鍏嶅涓枃浠朵娇鐢ㄤ簡鐩稿悓鐨勫彉閲忓悕鑰屽鑷村啿绐併侰璇█閲岄潰鐨勯潤鎬佸嚱鏁鍜屽嚱鏁鐨勫尯鍒槸锛氶潤鎬佸嚱鏁版槸鍑芥暟鐨勪竴绉嶏紝鍑芥暟鍖呮嫭闈欐佸嚱鏁板拰闈為潤鎬佸嚱鏁颁袱绉嶃傞潤鎬佸嚱鏁版槸鏈塻tatic淇グ鐨勫嚱鏁帮紝濡傛灉娌℃湁锛屽垯涓洪潪闈欐佸嚱鏁(鍏ㄥ眬鍑芥暟)銆傚綋鏁翠釜...
  • c璇█鎬庢牱璁鍑芥暟杩愯瀹屽悗涓嶄細閲婃斁
    绛旓細c璇█static淇グ璁鍑芥暟杩愯瀹屽悗涓嶄細閲婃斁銆傛牴鎹煡璇㈢浉鍏宠祫鏂欎俊鎭樉绀猴細鐢╯tatic淇グ锛屽湪褰撳墠鍑芥暟琚墽琛屽畬鍚庝笉浼氳閲婃斁锛屼笅娆℃墽琛岃鍑芥暟鏃朵細浣跨敤涓婃杩愯瀹屽悗瀹冪殑鍊硷紝涓旈潤鎬佸眬閮鍙橀噺浼氳嚜鍔ㄨ祴鍒濆间负0鎴栫┖涓层
  • C璇█涓澶氱敤static濂藉悧?
    绛旓細涓嶅ソ锛static 鐨勫彉閲鐨勭敓鍛藉懆鏈熺瓑鍚屼簬绋嬪簭鐨勬暣涓敓鍛藉懆鏈燂紝鎵浠ョ▼搴忎笉缁撴潫锛岀郴缁熸槸涓嶄細閲婃斁static 鍙橀噺鐨勫唴瀛樼┖闂寸殑銆傚鏋滀娇鐢ㄨ繃澶氾紝浼氬崰鐢ㄥぇ閲忓唴瀛橈紝涓嶅缓璁娇鐢ㄣ
  • c璇█涓璼tatic鍏抽敭瀛
    绛旓細C++闈㈠悜杩囩▼鐨剆tatic鍜孋鐨勬槸涓鏍风殑銆 C++鐨剆tatic鏈変袱绉嶇敤娉曪細闈㈠悜杩囩▼绋嬪簭璁捐涓殑static鍜岄潰鍚戝璞$▼搴忚璁′腑鐨剆tatic銆傚墠鑰呭簲鐢ㄤ簬鏅鍙橀噺鍜屽嚱鏁锛屼笉娑夊強绫伙紱鍚庤呬富瑕佽鏄巗tatic鍦ㄧ被涓殑浣滅敤銆備竴銆侀潰鍚戣繃绋嬭璁′腑鐨剆tatic 1銆侀潤鎬佸叏灞鍙橀噺 鍦ㄥ叏灞鍙橀噺鍓嶏紝鍔犱笂鍏抽敭瀛梥tatic锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓涓潤鎬...
  • 扩展阅读:c语言static的用法 ... static关键字的5种用法 ... c语言对被调函数怎么声明 ... static int的值会变吗 ... c语言中static解释 ... public static void main ... c语言static经典例子 ... c语言static的特点 ... c语言static函数不能声明 ...

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