C语言中某一个文件里定义的static变量,那么另一个文件能否读取这个变量? C语言中 其他文件可否调用文件中的static函数?

\u5728C\u8bed\u8a00\u4e2d\uff0c\u4e00\u4e2a\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684 \u5168\u5c40\u53d8\u91cf\uff0c\u5728\u53e6\u4e00\u4e2a\u6587\u4ef6\u4e2d\u80fd\u7528\u5417\uff1f

\u5168\u5c40\u53d8\u91cfextern\u53ef\u4ee5\u5728\u5176\u4ed6\u6e90\u7a0b\u5e8f\u4e2d\u4f7f\u7528\uff1b\u5168\u5c40\u53d8\u91cfstatic\u53ea\u80fd\u5728\u672c\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u3002
\u5168\u5c40\u53d8\u91cf\u662f\u4f7f\u7528\u76f8\u540c\u7684\u5185\u5b58\u5757\u5728\u6574\u4e2a\u7c7b\u4e2d\u5b58\u50a8\u4e00\u4e2a\u503c\u3002
\u5168\u5c40\u53d8\u91cf\u65e2\u53ef\u4ee5\u662f\u67d0\u5bf9\u8c61\u51fd\u6570\u521b\u5efa\uff0c\u4e5f\u53ef\u4ee5\u662f\u5728\u672c\u7a0b\u5e8f\u4efb\u4f55\u5730\u65b9\u521b\u5efa\u3002\u5168\u5c40\u53d8\u91cf\u662f\u53ef\u4ee5\u88ab\u672c\u7a0b\u5e8f\u6240\u6709\u5bf9\u8c61\u6216\u51fd\u6570\u5f15\u7528\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u4f7f\u7528\u6ce8\u610f
\u5168\u5c40\u53d8\u91cf\u7684\u5b58\u5728\u4e3b\u8981\u6709\u4ee5\u4e0b\u4e00\u4e9b\u539f\u56e0\uff1a
1\u3001\u4f7f\u7528\u5168\u5c40\u53d8\u91cf\u4f1a\u5360\u7528\u66f4\u591a\u7684\u5185\u5b58\uff08\u56e0\u4e3a\u5176\u751f\u547d\u671f\u957f\uff09\uff0c\u4e0d\u8fc7\u5728\u8ba1\u7b97\u673a\u914d\u7f6e\u5f88\u9ad8\u7684\u4eca\u5929\uff0c\u8fd9\u4e2a\u4e0d\u5e94\u8be5\u7b97\u4ec0\u4e48\u95ee\u9898\uff0c\u9664\u975e\u4f7f\u7528\u7684\u662f\u5de8\u5927\u5bf9\u8c61\u7684\u5168\u5c40\u53d8\u91cf\uff0c\u80fd\u907f\u514d\u5c31\u4e00\u5b9a\u8981\u907f\u514d\u3002
2\u3001\u4f7f\u7528\u5168\u5c40\u53d8\u91cf\u7a0b\u5e8f\u8fd0\u884c\u65f6\u901f\u5ea6\u66f4\u5feb\u4e00\u4e9b\uff08\u56e0\u4e3a\u5185\u5b58\u4e0d\u9700\u8981\u518d\u5206\u914d\uff09\uff0c\u540c\u6837\u4e5f\u5feb\u4e0d\u4e86\u591a\u5c11\u3002
3\u3001\u5bf9\u4e8e\u5c40\u90e8\u53d8\u91cf\u7684\u540d\u5b57\u7a7a\u95f4\u6c61\u67d3\uff0c\u8fd9\u4e2a\u5728\u4e0d\u4f7f\u7528\u592a\u591a\u53d8\u91cf\u65f6\u662f\u53ef\u4ee5\u907f\u514d\u7684\u3002
4\u3001\u5f53\u5168\u5c40\u53d8\u91cf\u4e0e\u5c40\u90e8\u53d8\u91cf\u91cd\u540d\u7684\u65f6\u5019\uff0c\u8d77\u4f5c\u7528\u7684\u662f\u5c40\u90e8\u53d8\u91cf\uff0c\u5168\u5c40\u53d8\u91cf\u88ab\u5c4f\u853d\u6389\u3002
5\u3001\u8fd8\u53ef\u4ee5\u7528extern\u5728\u51fd\u6570\u5916\u5bf9\u5168\u5c40\u53d8\u91cf\u58f0\u660e\uff0c\u4f7f\u5168\u5c40\u53d8\u91cf\u7684\u4f5c\u7528\u57df\u4ece\u58f0\u660e\u5904\u5230\u6587\u4ef6\u7684\u7ed3\u675f\u3002
6\u3001\u5168\u5c40\u53d8\u91cf\u7684\u4f18\u5148\u5ea6\u4f4e\u4e8e\u5c40\u90e8\u53d8\u91cf\u3002
\u53c2\u8003\u8d44\u6599\uff1a\u767e\u5ea6\u767e\u79d1-\u5168\u5c40\u53d8\u91cf

\u4e0d\u80fd\u3002

C\u8bed\u8a00\u4e2d\u7684static\u51fd\u6570\uff1a

\u5185\u90e8\u51fd\u6570\u548c\u5916\u90e8\u51fd\u6570

\u51fd\u6570\u4e00\u65e6\u5b9a\u4e49\u540e\u5c31\u53ef\u88ab\u5176\u5b83\u51fd\u6570\u8c03\u7528\u3002\u4f46\u5f53\u4e00\u4e2a\u6e90\u7a0b\u5e8f\u7531\u591a\u4e2a\u6e90\u6587\u4ef6\u7ec4\u6210\u65f6\uff0c\u5728\u4e00\u4e2a\u6e90\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u51fd\u6570\u80fd\u5426\u88ab\u5176\u5b83\u6e90\u6587\u4ef6\u4e2d\u7684\u51fd\u6570\u8c03\u7528\u5462\u3002\u4e3a\u6b64\uff0cC\u8bed\u8a00\u53c8\u628a\u51fd\u6570\u5206\u4e3a\u4e24\u7c7b\uff1a


\u4e00\u3001\u5185\u90e8\u51fd\u6570

\u5982\u679c\u5728\u4e00\u4e2a\u6e90\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u51fd\u6570\u53ea\u80fd\u88ab\u672c\u6587\u4ef6\u4e2d\u7684\u51fd\u6570\u8c03\u7528\uff0c\u800c\u4e0d\u80fd\u88ab\u540c\u4e00\u6e90\u7a0b\u5e8f\u5176\u5b83\u6587\u4ef6\u4e2d\u7684\u51fd\u6570\u8c03\u7528\uff0c \u8fd9\u79cd\u51fd\u6570\u79f0\u4e3a\u5185\u90e8\u51fd
\u6570\u3002\u5b9a\u4e49\u5185\u90e8\u51fd\u6570\u7684\u4e00\u822c\u5f62\u5f0f\u662f\uff1a static \u7c7b\u578b\u8bf4\u660e\u7b26 \u51fd\u6570\u540d(\u5f62\u53c2\u8868) \u3002
\u4f8b\u5982\uff1a
static int f(int a,int b) \u5185\u90e8\u51fd\u6570\u4e5f\u79f0\u4e3a\u9759\u6001\u51fd\u6570\u3002\u4f46\u6b64\u5904\u9759\u6001static \u7684\u542b\u4e49\u5df2\u4e0d\u662f\u6307\u5b58\u50a8\u65b9\u5f0f\uff0c\u800c\u662f\u6307\u5bf9\u51fd\u6570\u7684\u8c03\u7528\u8303\u56f4\u53ea\u5c40\u9650\u4e8e\u672c\u6587\u4ef6\u3002 \u56e0\u6b64\u5728\u4e0d\u540c\u7684\u6e90\u6587\u4ef6\u4e2d\u5b9a\u4e49\u540c\u540d\u7684\u9759\u6001\u51fd\u6570\u4e0d\u4f1a\u5f15\u8d77\u6df7\u6dc6\u3002

\u4e8c\u3001\u5916\u90e8\u51fd\u6570
\u5916\u90e8\u51fd\u6570\u5728\u6574\u4e2a\u6e90\u7a0b\u5e8f\u4e2d\u90fd\u6709\u6548\uff0c\u5176\u5b9a\u4e49\u7684\u4e00\u822c\u5f62\u5f0f\u4e3a\uff1a extern \u7c7b\u578b\u8bf4\u660e\u7b26 \u51fd\u6570\u540d(\u5f62\u53c2\u8868) \u4f8b\u5982\uff1a
extern int f(int a,int b)\u5982\u5728\u51fd\u6570\u5b9a\u4e49\u4e2d\u6ca1\u6709\u8bf4\u660eextern\u6216static\u5219\u9690\u542b\u4e3aextern\u3002\u5728\u4e00\u4e2a\u6e90\u6587\u4ef6\u7684\u51fd\u6570\u4e2d\u8c03\u7528\u5176\u5b83\u6e90\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u5916\u90e8\u51fd\u6570\u65f6\uff0c\u5e94\u7528extern\u8bf4\u660e\u88ab\u8c03\u51fd\u6570\u4e3a\u5916\u90e8\u51fd\u6570\u3002\u4f8b\u5982\uff1a
F1.C (\u6e90\u6587\u4ef6\u4e00)
main()
{ extern int f1(int i); /*\u5916\u90e8\u51fd\u6570\u8bf4\u660e\uff0c\u8868\u793af1\u51fd
\u6570\u5728\u5176\u5b83\u6e90\u6587\u4ef6\u4e2d*/ \u2026\u2026 }
F2.C (\u6e90\u6587\u4ef6\u4e8c)
extern int f1(int i); /*\u5916\u90e8\u51fd\u6570\u5b9a\u4e49*/
{ \u2026\u2026 }

static不是允许修改,你估计和const搞混了,static表示静态存储,直到整个程序结束变量值才会从存储区释放,静态变量又分为全局静态变量和局部静态变量,
全局变量与全局静态变量的区别:
(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
(c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;

静态全局变量的作用:
(a)不必担心其它源文件使用相同变量名,彼此相互独立。
(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
(c) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;
静态局部变量和作用域和局部变量一样,不过生存周期不一样,局部变量在定义局部变量的函数调用完之后就从内存中释放其值,而静态局部变量不释放,等整个程序全部执行结束后才会从内存中释放。

不能,但用extern可以

  • ...浠庨敭鐩樿緭鍏ョ粨鏋勪綋淇℃伅,骞舵妸杩欎簺淇℃伅鍐欏叆纾佺洏鏂囦欢stuinfo.txt...
    绛旓細浠鏂囦欢涓璇诲嚭缁撴瀯浣擄細[cpp] view plaincopy include <stdio.h> include <stdlib.h> typedef struct { char c;int h;short n;long m;float f;double d1;char *s;double d2;}st;int main(void){ FILE *fp;st sa,sb;char *str="abcdefg";sa.c='K';sa.h=-3;sa.n=20;sa.m=...
  • 鐢C璇█鍐涓涓瀛︾敓淇℃伅鏌ヨ绯荤粺
    绛旓細include<stdio.h>#include<string.h>#include<malloc.h>typedef struct student{ int num;//瀛﹀彿 char name[7];//濮撳悕鏈澶6涓瓧鑺 鐣欎竴涓粰缁撴潫绗﹀彿'\0' char sex;// 鎬у埆 F/M int age;//骞撮緞 struct student * nextStudent;}stu;//瀹氫箟涓涓缁撴瀯绫诲瀷 stuint main(){ ...
  • C璇█濡備綍鑾峰彇鏂囦欢淇℃伅?stat杩欎釜鍑芥暟濡備綍浣跨敤? - C / C++ -
    绛旓細include <unistd.h> 瀹氫箟鍑芥暟 int stat(const char * file_name,struct stat *buf);鍑芥暟璇存槑 stat()鐢ㄦ潵灏嗗弬鏁癴ile_name鎵鎸鐨勬枃浠鐘舵侊紝澶嶅埗鍒板弬鏁癰uf鎵鎸囩殑缁撴瀯涓備笅闈㈡槸struct stat鍐呭悇鍙傛暟鐨勮鏄 struct stat { dev_t st_dev; /*device*/ ino_t s...
  • 鎴戦渶瑕c璇█姣忎釜澶鏂囦欢閲岀殑鎵鏈夊嚱鏁颁粙缁嶅強鐢ㄦ硶!
    绛旓細int findnext(struct ffblk *ffblk) 鍙栧尮閰峟inddirst鐨鏂囦欢,鎴愬姛杩斿洖0void fumerge(char *path,char *drive,char *dir,char *name,char *ext) 姝ゅ嚱鏁伴氳繃鐩樼drive(C:銆丄:绛),璺緞dir(\TC銆乗BC\LIB绛), 鏂囦欢鍚峮ame(TC銆乄PS绛),鎵╁睍鍚峞xt(.EXE銆.COM绛)缁勬垚涓涓枃浠鍚 瀛樹笌path涓.int fnsplit(...
  • c璇█涓枃浠
    绛旓細浼拌鏄綘绋嬪簭涓叾浠栧湴鏂瑰瓨鍦ㄩ昏緫閿欒锛庣粰浣涓涓鎴戝啓鐨勪緥瀛愶細include<stdio.h> define N 5 struct student { int num;char name[20];int course[3];float ave;};void main(void){ int i,j;FILE *fp;struct student st[N];for(i=0;i<N;i++){ printf("student %d:\n",i+1);printf...
  • C璇█绠鍗曚範棰:struct st {int n; struct st *next;};銆傘傘
    绛旓細鎸夌収杩欎釜绠4涓〃杈惧紡鐨勫 琛ㄨ揪寮廇 绛夊悓浜巔->n 鐒跺悗p=p+1锛岃〃杈惧紡鍊兼槸p鑷涔嬪墠p->n鐨勫间篃灏辨槸5 琛ㄨ揪寮廈 棣栧厛璁$畻p->n鐨勫硷紝涔熷氨鐩稿綋浜巃[0].n(鍊兼槸5)锛岀劧鍚庢墽琛(a[0].n)++锛屾敞鎰忔槸鍏堝彇鍊煎啀鑷锛屽洜姝よ〃杈惧紡鐨勫艰繕鏄5 琛ㄨ揪寮C 棣栧厛璁$畻(*p).n锛岄偅灏辩浉褰撲簬a[0].n(鍊兼槸5)锛岀劧鍚...
  • C璇█棰樼洰姹傝В struct浠涔堟剰鎬 杩樻湁t.s[k]鍜宼.c甯︿究浠涔 璇风粰鎴戞帹瀵间笅...
    绛旓細t.s[k]琛ㄧず鍦ㄧ粨鏋勪綋struct st 瀹氫箟鐨t涓殑瀛楃鏁扮粍s涓殑涓嬫爣涓簁鐨勫瓧绗︼紝鍚岀悊锛宼.c琛ㄧずt涓殑瀛楃c銆傝繍绠楁帹瀵硷細1锛歴truct st a[4] = {{ '1',"123"},{ '2',"321"},{ '3',"123"},{ '4',"321"}};缁欑粨鏋勪綋鏁扮粍鍚勪釜鎴愬憳鍒嗗埆璧嬪 2锛歠or(k = 0; k < 4; k++)printf("...
  • 璇锋暀澶у涓涓猚璇█涓殑闂?杩欎釜闂宸茬粡鍥版壈鎴戝緢涔呬簡銆傞鐩涓:_鐧 ...
    绛旓細鍙﹀浣犲簲璇ョ煡閬擄紝C璇█鍑芥暟鍙兘鎸夊间紶鍙傦紝鑰屼笖褰㈠弬琚垎閰嶅湪鏍堜笂 瀵逛簬鎸囬拡锛屽悓鏍锋槸鎸夊间紶鍙傜殑锛屽彧涓嶈繃瀵规寚閽堣繘琛岄棿鎺ュ紩鐢紙瑙i櫎鎸囬拡杩愮畻锛夋椂锛岃璁块棶鐨勯兘鏄悓涓涓鍦板潃缃簡锛屾墍浠ユ寚閽堟槸涓笉鐗逛緥鐨勭壒渚 鏈変簡杩欎簺鍩虹鐭ヨ瘑锛屾垜浠彲浠ユ潵瑙e喅浣犵殑闂浜 棣栧厛锛屼綘绗竴涓緥瀛愰噷鐨勭▼搴忓湪fun鍑芥暟涓畾涔浜嗕竴涓寚閽...
  • 璁惧凡鏈瀹氫箟: char *st="how are you"; 涓嬪垪绋嬪簭娈涓姝g‘鐨鏄
    绛旓細閫堿銆係trcpy (p = a + 1锛 & st [4]);浠巗t锛4锛藉埌p锛宲锛濓紓areyou锛侭锛宎鏄涓涓瀛楃鏁扮粍鐨勫悕瀛椼傝繖鏄竴涓父鏁般備綘涓嶈兘鍋氾紜锛媋 C锛庡洜涓猴紛st锛濃滀綘濂藉悧鈥濓紱鏈11涓瓧绗︼紝鍖呮嫭锛0锛屾湁12涓瓧绗︺傛墍浠ワ蓟11锛芥病鏈夊鍒讹技0銆侱銆傦蓟锛戒笉澹版槑鏁扮粍鐨勫ぇ鐗堟湰銆傛敞鎰忥細C涓嶆槸涔辩爜鐨勯棶棰橈紝鍥犱负鏁扮粍a...
  • 鐢C璇█缂栧啓涓涓閫氳繃閿洏鎴鏂囦欢杈撳叆瀛︾敓淇℃伅,骞跺皢瀛︾敓淇℃伅杈撳嚭鍒版枃浠...
    绛旓細灏嗗鐢熶俊鎭緭鍑哄埌鏂囦欢鐨鍑芥暟銆俿tu涓虹粨鏋勪綋鏁扮粍,num涓烘暟缁勪腑鍏冪礌鐨勪釜鏁,fp涓轰互鈥滃啓鈥濇柟寮忔墦寮鐨勬枃鏈枃浠剁殑鎸囬拡銆3) 缂栧啓涓诲嚱鏁板浣犳墍缂栧啓鐨勪笂杩板叚涓嚱鏁拌繘琛岃皟鐢ㄩ獙璇併備富鍑芥暟鐨勫姛鑳藉涓:棣栧厛瀹氫箟10涓鐢熺殑缁撴瀯浣撴暟缁,鐢遍敭鐩樿緭鍏ュ鐢熺殑淇℃伅( 濮撳悕銆佽嫳璇佹暟瀛︺佺墿鐞嗐佸寲瀛︽垚缁 ),灏嗚繖10涓悓瀛︾殑淇℃伅瀛樺叆student1....
  • 扩展阅读:c++和python先学哪个 ... c++编程适合多大孩子 ... c++编程 ... c十十语言 ... c++编程适合几岁学 ... 集体剂量定义为受某一辐射 ... 小学生学python还是c++ ... excel如何定义某一个区域 ... c#一般用来开发什么 ...

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