在C語言中,static靜態變量,extern外部變量的區別

1:什麼是static

static,叫做靜態變量。一般用於全局變量裏面,首先,我們來考慮一下爲什麼要用到static,我們可以想一下,一個項目其實是由很多位工程師一起來完成的,他們之間是互相獨立完成自己所要完成的一個模塊的,這就有可能出現定義相同的全局變量或者全局函數名(記住,我這邊所說的全局變量指的是針對各自工程師的模塊中),這樣一旦整合到一起就會出現編譯報錯,因爲會有相同的變量或者函數。

只要我們在定義函數或者定義變量的時候,在前面加上static,就代表說你所定義的變量或者函數是侷限於該源程序文件中。這就是原因。我們來看一下下面的例子

這是庫文件A.h

#include <stdio.h>

static int called();
void printStr();

這是程序A.c

#include "A.h"


static int called()
{
return 6;
}
void printStr()
{
int returnVal;
returnVal = called();
printf("returnVal=%d\n",returnVal);
}

然後我們在B.c中調用上面的文件

#include "A.h"


int main()
{
int val;
val = called();
printStr();
return 0;
}

此時要是編譯的話就會出現錯誤,這裏我就不把結果發出來,他會提示called沒有被定義。要修改如下

#include "A.h"
int main()
{
printStr();
return 0;
}

這樣的話就不會出現報錯,因爲calle是一個被定義了static的函數,只能在A.c源文件中使用,不允許其他的調用。

相關的靜態變量類似,我就不在演示了

2.extern外部變量

其實extern外部變量就是大家所說的全局變量,可以在程序原文件中使用的變量


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章