C語言入門篇--關鍵字static詳解
1.修飾局部變量
1.1作用
ststic修飾局部變量,會改變局部變量的生命周期,不改變作用域:
生命周期:和全局變量一樣具有全局性,但在內(nèi)存中的位置沒有改變,還在在靜態(tài)存儲區(qū)中。
作用域:作用域不改變。
注意:靜態(tài)局部變量的初始化在整個變量定義時只會進行一次。
1.2舉例
(1)不加static
#include <stdio.h>
Show()
{
int j = 0;
j++;
printf("j=%d\n", j);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
Show();
}
return 0;
}

(2)加static
#include <stdio.h>
Show()
{
static int j = 0;//生命周期變?yōu)槿值模?
j++;
printf("j=%d\n", j);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
Show();
}
return 0;
}

(3)靜態(tài)局部變量的初始化只會進行一次
#include <stdio.h>
Show()
{
static int j = 0;
j = 3;
j++;
printf("j=%d\n", j);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
Show();
}
return 0;
}

2.修飾全局變量
2.1作用
static修飾全局變量,表示全局變量只在本文件內(nèi)有效,取消了全局變量的跨文件屬性。
2.2舉例
由于static對全局變量的作用在一個文件里體現(xiàn)不出來,固我們創(chuàng)建兩個文件,
在test1.c中通過extern引用外部變量g_vale,在test2.c中創(chuàng)建全局變量g_vale 。
(1)不加static
test1.c:
#include <stdio.h>
extern int g_vale;
int main()
{
printf("g_vale=%d\n", g_vale);
return 0;
}
test2.c:
#include <stdio.h> int g_vale = 100;//定義全局變量
編譯運行:

(2)加static
test1.c
#include <stdio.h>
extern int g_vale;
int main()
{
printf("g_vale=%d\n", g_vale);
return 0;
}
test2.c
#include <stdio.h> static int g_vale = 100; //定義靜態(tài)全局變量
編譯運行:運行失敗,無法解析外部符號g_vale

3.修飾函數(shù)
3.1作用
static修飾函數(shù),和其修飾全局變量類似,表示函數(shù)只可在本文件內(nèi)調(diào)用使用,取消了函數(shù)的跨文件屬性。
3.2舉例
由于static對函數(shù)的作用在一個文件里體現(xiàn)不出來,固我們創(chuàng)建兩個文件,
在test1.c中通過extern引用外部函數(shù)Show( ),在test2.c中創(chuàng)建Show( )函數(shù)
(1)不加static
test1.c:
#include <stdio.h>
extern Show();//也可以不寫聲明,文件在鏈接時也可以找到,但會出現(xiàn)Warning:Show()未定義
int main()
{
Show();
system("pause");
return 0;
}
test2.c:
#include <stdio.h>
void Show()
{
printf("This is Show()\n");
}
編譯運行:

(2)加static
test1.c:
#include <stdio.h>
extern Show();
int main()
{
Show();
system("pause");
return 0;
}
test2.c:
#include <stdio.h>
static void Show()
{
printf("This is Show()\n");
}
編譯運行:運行失敗,無法解析外部符號Show

以上就是C語言入門篇--關鍵字static詳解的詳細內(nèi)容,更多關于C語言關鍵字static詳解的資料請關注腳本之家其它相關文章!
相關文章
Qt創(chuàng)建項目實戰(zhàn)之手把手創(chuàng)建第一個Qt項目
我們在進行軟件開發(fā)學習時,有時候需要qt軟件進行代碼的敲寫,下面這篇文章主要給大家介紹了關于Qt創(chuàng)建項目實戰(zhàn)之手把手創(chuàng)建第一個Qt項目的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04
C語言深入刨析數(shù)據(jù)結構之棧與鏈棧的設計與應用
棧是限定僅在表尾進行插入或刪除操作的線性表,表尾稱為棧頂(top),表頭稱為棧底(bottom)。棧的最主要特點就是“先進后出”(FILO),或“后進先出”(LIFO)。用鏈式存儲結構表示的棧稱為“鏈?!?,鏈棧對應于鏈表2022-05-05
visual?studio?將編譯后的dll等文件自動復制到指定目錄的方法
這篇文章主要介紹了visual?studio?將編譯后的dll等文件自動復制到指定目錄,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-03-03

