(C语言)编译时给全局变量和静态变量分配存储空间,运行时给局部变量分配存储空间,这样说对吗? 静态变量是属于:A.全局变量.B.局部变量C.可变变量D常量

C\u8bed\u8a00\u4e2d \u5c40\u90e8\u53d8\u91cf\u548c\u5168\u5c40\u53d8\u91cf\u90fd\u662f\u5b58\u50a8\u5728\u4ec0\u4e48\u533a

C\u8bed\u8a00\u4e2d\u5c40\u90e8\u53d8\u91cf\u5b58\u5728\u6808\u91cc\uff0c\u5168\u5c40\u53d8\u91cf\u5b58\u9759\u6001\u5b58\u50a8\u533a\u3002
\u5c40\u90e8\u53d8\u91cf\u5728\u6808\u7a7a\u95f4\u4e0a\u5206\u914d\uff0c\u8fd9\u4e2a\u5c40\u90e8\u53d8\u91cf\u6240\u5728\u7684\u51fd\u6570\u88ab\u591a\u6b21\u8c03\u7528\u65f6\uff0c\u6bcf\u6b21\u8c03\u7528\u8fd9\u4e2a\u5c40\u90e8\u53d8\u91cf\u5728\u6808\u4e0a\u7684\u4f4d\u7f6e\u90fd\u4e0d\u4e00\u5b9a\u76f8\u540c\u3002\u5c40\u90e8\u53d8\u91cf\u4e5f\u53ef\u4ee5\u5728\u5806\u4e0a\u52a8\u6001\u5206\u914d\uff0c\u4f46\u662f\u8bb0\u5f97\u4f7f\u7528\u5b8c\u8fd9\u4e2a\u5806\u7a7a\u95f4\u540e\u8981\u91ca\u653e\u4e4b\u3002
\u5168\u5c40\u53d8\u91cf\u5168\u90e8\u5b58\u653e\u5728\u9759\u6001\u5b58\u50a8\u533a\uff0c\u5728\u7a0b\u5e8f\u5f00\u59cb\u6267\u884c\u65f6\u7ed9\u5168\u5c40\u53d8\u91cf\u5206\u914d\u5b58\u50a8\u533a\uff0c\u7a0b\u5e8f\u884c\u5b8c\u6bd5\u5c31\u91ca\u653e\u3002\u5728\u7a0b\u5e8f\u6267\u884c\u8fc7\u7a0b\u4e2d\u5b83\u4eec\u5360\u636e\u56fa\u5b9a\u7684\u5b58\u50a8\u5355\u5143\uff0c\u800c\u4e0d\u52a8\u6001\u5730\u8fdb\u884c\u5206\u914d\u548c\u91ca\u653e\uff1b

\u6269\u5c55\u8d44\u6599
C\u8bed\u8a00\u4e2d\u5c40\u90e8\u53d8\u91cf\u548c\u5168\u5c40\u53d8\u91cf\u793a\u4f8b\uff1a
#include
#include
staticints1=0,s2=0,s3=0;//\u9759\u6001\u53d8\u91cf\u653e\u5728\u9759\u6001\u533a
intg1=0,g2=0,g3=0;//\u5168\u5c40\u53d8\u91cf\u653e\u5728\u9759\u6001\u533a
voidmain()
{
staticints4=0,s5=0,s6=0;//\u9759\u6001\u53d8\u91cf
inta1=0,a2=0,a3=0;//\u5c40\u90e8\u53d8\u91cf\u653e\u5728\u6808\u533a
charc1[]="aabb";//\u5c40\u90e8\u53d8\u91cf\u653e\u5728\u6808\u533a
char*c2="aabb";//\u5b57\u7b26\u5e38\u91cf\u653e\u5728\u9759\u6001\u533a
char*m1=(char*)malloc(1);//\u5806\u533a
char*m2=(char*)malloc(1);//\u5806\u533a
char*m3=(char*)malloc(1);//\u5806\u533a
printf("\u52a8\u6001\u6570\u636e\u533a\n");
printf("a1\na2\na3\n",&a1,&a2,&a3);
printf("c1\n",c1);
printf("m1\nm2\nm3\n",&m1,&m2,&m3);
printf("\u9759\u6001\u6570\u636e\u533a\n");
printf("s1\ns2\ns3\n",&s1,&s2,&s3);
printf("g1\ng2\ng3\n",&g1,&g2,&g3);
printf("s4\ns5\ns6\n",&s4,&s5,&s6);
printf("c2\n",c2);
}

\u3000\u3000\u7b54\u6848\u662fA\u5168\u5c40\u53d8\u91cf\u3002
\u3000\u3000\u9759\u6001\u53d8\u91cf\u7684\u7c7b\u578b\u5173\u952e\u5b57\u662fstatic\u3002 \u9759\u6001\u53d8\u91cf\u5f53\u7136\u662f\u5c5e\u4e8e\u9759\u6001\u5b58\u50a8\u65b9\u5f0f\uff0c\u4f46\u662f\u5c5e\u4e8e\u9759\u6001\u5b58\u50a8\u65b9\u5f0f\u7684\u91cf\u4e0d\u4e00\u5b9a\u5c31\u662f\u9759\u6001\u53d8\u91cf\uff0c \u4f8b\u5982\u5916\u90e8\u53d8\u91cf\u867d\u5c5e\u4e8e\u9759\u6001\u5b58\u50a8\u65b9\u5f0f\uff0c\u4f46\u4e0d\u4e00\u5b9a\u662f\u9759\u6001\u53d8\u91cf\uff0c\u5fc5\u987b\u7531 static\u52a0\u4ee5\u5b9a\u4e49\u540e\u624d\u80fd\u6210\u4e3a\u9759\u6001\u5916\u90e8\u53d8\u91cf\uff0c\u6216\u79f0\u9759\u6001\u5168\u5c40\u53d8\u91cf\u3002 \u5bf9\u4e8e\u81ea\u52a8\u53d8\u91cf\uff0c\u5b83\u5c5e\u4e8e\u52a8\u6001\u5b58\u50a8\u65b9\u5f0f\u3002 \u4f46\u662f\u4e5f\u53ef\u4ee5\u7528static\u5b9a\u4e49\u5b83\u4e3a\u9759\u6001\u81ea\u52a8\u53d8\u91cf\uff0c\u6216\u79f0\u9759\u6001\u5c40\u90e8\u53d8\u91cf\uff0c\u4ece\u800c\u6210\u4e3a\u9759\u6001\u5b58\u50a8\u65b9\u5f0f\u3002 \u7531\u6b64\u770b\u6765\uff0c\u4e00\u4e2a\u53d8\u91cf\u53ef\u7531static\u8fdb\u884c\u518d\u8bf4\u660e\uff0c\u5e76\u6539\u53d8\u5176\u539f\u6709\u7684\u5b58\u50a8\u65b9\u5f0f\u3002
\u3000\u3000\u201c\u9759\u6001\u53d8\u91cf\u201d\u8fd9\u4e00\u672f\u8bed\u6709\u4e24\u4e2a\u5bb9\u6613\u6df7\u6dc6\u7684\u5b9a\u4e49\uff1a
\u3000\u3000\u8bed\u8a00\u65e0\u5173\u7684\u901a\u7528\u5b9a\u4e49\uff1a\u4e0e\u7a0b\u5e8f\u6709\u7740\u76f8\u540c\u751f\u547d\u5468\u671f\uff08\u82f1\u8bed\uff1aObject lifetime\uff09\u7684\u53d8\u91cf\uff1b
\u3000\u3000C\u65cf\u8bed\u8a00\u7279\u6709\u7684\u5b9a\u4e49\uff1a\u4ee5static\u5b58\u50a8\u7c7b\u58f0\u660e\u7684\u53d8\u91cf\u3002
\u3000\u3000\u800c\u5728\u4ee5Pascal\u4e3a\u4ee3\u8868\u7684\u8bb8\u591a\u7a0b\u5e8f\u8bed\u8a00\u4e2d\uff0c\u6240\u6709\u5c40\u90e8\u53d8\u91cf\u90fd\u7531\u7cfb\u7edf\u81ea\u52a8\u5206\u914d\u5b58\u50a8\u7a7a\u95f4\uff0c\u800c\u6240\u6709\u5168\u5c40\u53d8\u91cf\u7684\u5b58\u50a8\u7a7a\u95f4\u5219\u4ee5\u9759\u6001\u5206\u914d\u7684\u65b9\u5f0f\u83b7\u53d6\uff08\u5bf9\u5e94\u201c\u9759\u6001\u53d8\u91cf\u201d\uff09\uff0c\u56e0\u6b64\u7531\u4e8e\u5b9e\u9645\u4e0a\u201c\u5c40\u90e8\u53d8\u91cf\u201d\u548c\u201c\u5168\u5c40\u53d8\u91cf\u201d\u8fd9\u4e24\u4e2a\u672f\u8bed\u5df2\u8db3\u4ee5\u6db5\u76d6\u6240\u6709\u7684\u60c5\u51b5\uff0c\u5728\u8fd9\u4e9b\u7a0b\u5e8f\u8bed\u8a00\u4e2d\u901a\u5e38\u4e0d\u4f7f\u7528\u201c\u9759\u6001\u53d8\u91cf\u201d\u8fd9\u4e00\u672f\u8bed\uff0c\u800c\u76f4\u63a5\u4ee5\u201c\u5168\u5c40\u53d8\u91cf\u201d\u4ee3\u4e4b\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u5728\u8fd9\u4e9b\u7a0b\u5e8f\u8bed\u8a00\u4e2d\uff0c\u9759\u6001\u53d8\u91cf\u5c31\u662f\u5168\u5c40\u53d8\u91cf\uff0c\u800c\u5373\u4f7f\u5728\u6709\u660e\u786e\u533a\u5206\u5168\u5c40\u548c\u9759\u6001\u53d8\u91cf\u7684\u7a0b\u5e8f\u8bed\u8a00\u4e2d\uff0c\u5728\u7f16\u8bd1\u540e\u7684\u4ee3\u7801\u91cc\u4e8c\u8005\u4e5f\u4ee5\u76f8\u540c\u7684\u65b9\u5f0f\u83b7\u53d6\u5b58\u50a8\u7a7a\u95f4\u3002\u800c\u4eca\u672f\u8bed\u201c\u9759\u6001\u53d8\u91cf\u201d\u7684\u6982\u5ff5\u5219\u4e3b\u8981\u57fa\u4e8eC\u65cf\u8bed\u8a00\u7684\u201cstatic\u201d\u7684\u5b9a\u4e49

全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间

全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

存储空间的分配都是在运行阶段,只是静态变量是在程序开始的时候就分配了,直到结束才收回,而局部变量是不停的分配和回收的,

编译不分配,应该叫启动时分配吧。而且全局也有绝对相对吧,典型的例子就是单例模式,每个单件都是运行时New的。

  • C璇█,浣跨敤浜嗘湭鍒濆鍖栫殑灞閮鍙橀噺
    绛旓細灞閮鍙橀噺瀹氫箟鏃剁殑褰㈠紡涓 TYPE var = init_value;鍏跺惈涔変负瀹氫箟涓涓被鍨嬩负TYPE锛屽悕瀛椾负var鐨勫眬閮ㄥ彉閲忥紝骞跺垵濮嬪寲涓篿nit_value銆傚叾涓紝=init_value閮ㄥ垎鍙互鐪佺暐銆傛鏃讹紝var鐨勫垵濮嬪煎皢鏄竴涓殢鏈哄硷紝鐢缂栬瘧鍣ㄦ垨杩愯鐜鍐冲畾銆傚鏋滀互 TYPE var;瀹氫箟浜嗕竴涓湭鐭ュ垵濮嬪肩殑var,鍦ㄨ祴鍊煎墠鍘诲紩鐢ㄥ叾鍊硷紝姣斿杩涜鎵撳嵃...
  • 鍏充簬static a=c++,b++;鏄暐鎰忔濆晩
    绛旓細static鍙橀噺璧嬪垵鍊兼槸鍦缂栬瘧鏃杩涜鐨勶紝鑰屼笉鏄嚱鏁拌皟鐢ㄦ椂杩涜鐨勶紝涔熷氨鏄锛屽湪浣犵殑绋嬪簭杩愯鐨勬椂鍊欙紝c宸茬粡鍏锋湁鍊3浜嗭紝濡傛灉澶氭璋冪敤f()鍑芥暟锛屽苟涓嶄細鍦ㄦ瘡娆¤皟鐢╢()鏃堕噸鏂颁负c璧嬩竴娆″硷紝鑰屾槸浣垮緱c淇濇寔瀹冪殑鍊间笉鍔ㄣ備篃灏辨槸璇达紝浣犲彲浠ユ妸涓婇潰鐨勪緥瀛愮畝鍗曠殑鐪嬫垚鏄細int c=3; //鍏ㄥ眬鍙橀噺c=3 int f(int ...
  • c璇█include鐨勭敤娉曟槸浠涔
    绛旓細鍙锛屽叾瀹炲氨鏄皢fun.c鏂囦欢涓殑鍐呭娣诲姞鍒颁簡main鍑芥暟涔嬪墠锛岀劧鍚庡鏂扮殑鏂囦欢杩涜缂栬瘧锛岀敓鎴愭渶缁堢殑鍙墽琛绋嬪簭銆(2)缂栬瘧澶氭枃浠剁▼搴忥細鍚屾牱鏄笂杈圭殑渚嬪瓙锛屾妸main.c涓“ #include "fun.c" ”娉ㄩ噴鎺夛紝鍔犱笂涓鍙ワ細“extern int c;”鍥犱负 c 鍙橀噺鍦ㄥ彟澶栦竴涓枃浠(fun.c)涓畾涔夈1: /...
  • c++璇█鏈変粈涔堢壒鐐
    绛旓細闈㈠悜杩囩▼鐨勭▼搴忚璁℃柟娉曚笌闈㈠悜瀵硅薄鐨勭▼搴忚璁℃柟娉曞湪瀵瑰緟鏁版嵁鍜屽嚱鏁板叧绯讳笂鏄笉鍚岀殑銆 鍦ㄩ潰鍚戝璞$殑绋嬪簭璁捐涓紝灏嗘暟鎹拰瀵硅鏁版嵁杩涜鍚堟硶鎿嶄綔鐨勫嚱鏁板皝瑁呭湪涓璧蜂綔涓轰竴涓被鐨勫畾涔夛紝鏁版嵁灏嗚闅愯棌鍦ㄥ皝瑁呬綋涓紝璇ュ皝瑁呬綋閫氳繃鎿嶄綔鎺ュ彛涓庡鐣屼氦鎹俊鎭傚璞¤璇存槑鍏锋湁涓涓粰瀹氱被鐨鍙橀噺锛岀被绫讳技浜C璇█涓殑缁撴瀯锛屽湪...
  • c++鐨璇█鐗圭偣
    绛旓細鎬诲緱鏉ヨ锛孋++璇█鐨勪富瑕佺壒鐐硅〃鐜板湪涓や釜鏂归潰锛屼竴鏄敖閲忓吋瀹笴,浜屾槸鏀寔闈㈠悜瀵硅薄鐨勬柟娉曘傚畠鎿嶆寔浜咰鐨勭畝娲併侀珮鏁堢殑鎺ヨ繎姹囩紪璇█绛夌壒鐐癸紝瀵笴鐨勭被鍨嬬郴缁熻繘琛屼簡鏀归潻鐨勬墿鍏咃紝鍥犳C++姣擟鏇村畨鍏紝C++鐨缂栬瘧绯荤粺鑳芥鏌ュ嚭鏇村鐨勭被鍨嬮敊璇傚彟澶栵紝鐢变簬C璇█鐨勫箍娉涗娇鐢紝鍥犺屾瀬澶х殑淇冭繘浜咰++鐨勬櫘鍙婂拰鎺ㄥ箍銆侰++璇█鏈鏈...
  • C#寮傛璋冪敤,鐣岄潰鍋囨
    绛旓細鏂规硶濡備笅锛歭blStatus.Text = "鎵ц涓紝璇风◢鍊欌︹"; Func<int> longTask = new Func<int>(delegate(){ // 妯℃嫙闀挎椂闂翠换鍔 Thread.Sleep(2000); // 杩斿洖浠诲姟缁撴灉锛5 return 5;});// 鍙戣捣涓娆″紓姝ヨ皟鐢紝瀹為檯涓婂氨鏄湪.net绾跨▼姹犱腑鎵цlongTask// 杩欐椂鐢变簬鏄叾瀹冪嚎绋嬪湪宸ヤ綔...
  • 鐧惧害浜戠洏绉佸瘑绌洪棿鍦ㄥ摢閲,鎬庝箞鎵句笉鍒颁簡
    绛旓細棣栧厛闇瑕佽鏄庣殑涓鐐规槸鐧惧害缃戠洏缃戦〉鐗堟槸娌℃湁闅愯棌绌洪棿鐨勶紝蹇呴』瀹夎鐧惧害缃戠洏鐨勫鎴风銆傜櫨搴︽悳绱竴涓嬬櫨搴︾綉鐩橈紝鎵惧埌瀹冪殑瀹樼綉锛屾墦寮瀹樼綉缃戠珯 鍦ㄥ畼缃戦椤电偣鍑烩濆鎴风涓嬭浇鈥滐紝鎵撳紑瀹冪殑鐣岄潰锛岀偣鍑烩濈珛鍗充笅杞解滃畨瑁呭ソ鐧惧害浜戠瀹跺湪鑷繁鐨勭數鑴戝悗锛屾墦寮瀹冪殑鐣岄潰锛屽湪涓婃柟鐐瑰嚮鈥濋殣钘忕┖闂粹滐紝鍐嶅湪椤甸潰涓棿鐐瑰嚮鈥濆惎鐢ㄩ殣钘忕┖闂...
  • 鍑芥暟涔嬪瀹氫箟鐨鍙橀噺鏄粈涔堝晩?
    绛旓細鍒版湰绋嬪簭鏂囦欢鐨勭粨灏俱傚湪姝や綔鐢ㄥ煙鍐咃紝鍏ㄥ眬鍙橀噺鍙负鍚勪釜鍑芥暟鎵寮曠敤銆缂栬瘧鏃灏嗗閮ㄥ彉閲忓垎閰嶅湪闈欐佸瓨鍌ㄥ尯銆傛敞鎰忥細鏈夋椂闇瑕佸湪鍏朵粬鏂囦欢涓娇鐢╡xtern鏉ュ0鏄庡閮ㄥ彉閲忥紝浠ユ墿灞曞閮ㄥ彉閲忕殑浣滅敤鍩熴 涔熷彲鐢╯tatic澹版槑澶栭儴鍙橀噺锛屼娇璇ュ彉閲忎笉鑳借鍏朵粬鏂囦欢寮曠敤銆俿tatic澹版槑鍚庤澶栭儴鍙橀噺灏卞彧鑳藉湪鏈枃浠朵腑浣跨敤銆
  • 姹C璇█32涓瘝姹囩ゥ缁嗚В閲娿
    绛旓細Function 鍑芥暟 Global variable 鍏ㄥ眬鍙橀噺 Header file 澶存枃浠 Identifier 鏍囪瘑绗 Increment 鑷姞锛岄掑 Index 绱㈠紩 Infinite
  • C璇█瑙勫畾,婧愮▼搴忎腑鎵鏈夌敤鍒扮殑鍙橀噺閮藉繀椤诲厛璇存槑,鍚庝娇鐢,鍚﹀垯灏嗕細鍑洪敊...
    绛旓細2銆C璇█绋嬪簭鎬绘槸浠庢枃浠朵腑鐨勭涓涓嚱鏁板紑濮嬫墽琛屻傦紙 锛3銆佸鏁村瀷鏁扮粍鍜屽瓧绗﹀瀷鏁扮粍閮藉彲浠ヨ繘琛屾暣浣撹緭鍏ャ佽緭鍑恒傦紙 锛4銆佸湪涓涓簮绋嬪簭鏂囦欢涓殑涓嶅悓鐨勫嚱鏁颁腑鍙互浣跨敤鐩稿悓鍚嶅瓧鐨鍙橀噺銆傦紙 锛5銆佸嚱鏁扮殑鎸囬拡鏄寚璇ュ嚱鏁拌繑鍥炲兼墍鍗犲唴瀛樺崟鍏冪殑鍦板潃銆傦紙 锛1銆佸锛2銆侀敊锛岄兘鏄粠main涓诲嚱鏁板紑濮嬫墽琛岀殑 3...
  • 扩展阅读:c++编程 ... c语言全局变量怎么写 ... c语言编译器在线编译 ... c 全局变量 ... c语言设置全局变量 ... c语言编译时老是1error ... 全局变量声明 ... c语言extern的用法 ... c语言是需要编译的语言 ...

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