static用法
阿新 • • 發佈:2018-12-19
本用法針對於C語言,文中所用程式碼在Qt中均執行成功。
static 主要用法:修飾變數、修飾函式
1、修飾變數:形成動態變數和靜態變數
- 動態變數(不使用static)
#include<stdio.h>
void myauto()
{
int a = 0;
printf("a = %d\n",a);
a++;
}
int main()
{
int i;
for(i = 0; i < 5; i++)
{
myatuo();
}
}
程式的輸出結果為 :
a = 0
a = 0
a = 0
a = 0
a = 0
- 靜態變數
首先只要整個程式開始執行之後,靜態變數是一直存在的,不消失的;
其次,靜態變數值初始化一次,即static int a = 0;
語句只執行一次
#include<s tdio.h>
void mystatic()
{
static int a = 0;//整個程序執行過程中一直有效,是在靜態區,但是隻能mystatic函式內部訪問使用
printf("a = %d\n",a);
a++;
}
int main()
{
int i = 0;
for(i = 0; i < 5; i++)
{
mystatic( );
}
}
程式執行結果為:
a = 0
a = 1
a = 2
a = 3
a = 4
-
總結
static定義的靜態區域性變數:- 靜態區域性變數在函式記憶體定義的,其生存週期為整個源程式,但是作用域同自動變數,只能在定義該變數的函式內部使用;退出該函式之後該變數仍然存在只是不能使用;
- 靜態變數未賦初值的系統自動賦值0;其他自動變數賦值則具有隨機性;
static定義的靜態全域性變數:
- 仍然採用靜態儲存方式,但是作用域為定義該變數的原始檔內部 ,非靜態的全域性變數的作用域為這個源程式(包括多個原始檔)
2.static修飾函式
使用static定義的函式只能在本檔案中被呼叫,在源程式的其他檔案中不可以被呼叫。