1. 程式人生 > >static用法

static用法

本用法針對於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定義的函式只能在本檔案中被呼叫,在源程式的其他檔案中不可以被呼叫。