static和extern的區別


extern只是聲明,不是定義。

static卻是是定義

#include <stdio.h>

int a=3;

int b=4;//非晶態全局變量,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同              //一源程序的其它源文件中不能使用它

static int d=5;//靜態全局變量
extern int c;//提示編譯器c在別的文件中定義,這里先拿來用
int main(void){
printf("a is %p\n",&a);//這個a是全局變量a
static int a;//重新定義了a
printf("static a is %p\n",&a);//地址發生了變化
printf("b is %p\n",&b);
extern int b;//這個b還是全局變量b,不過沒這樣用extern的,這里只是測試一下,說明沒有語法錯誤
printf("extern b is %p\n",&b);//地址沒變

printf("c is %d\n",c);//能通過編譯,但是如果在鏈接的時候,別的文件中沒找到c的定義,則報錯
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM