C/C++知識教程:static的用法


 

static 的用法ios

static關鍵字是C, C++中都存在的關鍵字, 它主要有三種使用方式, 其中前兩種只指在C語言中使用, 第三種在C++中使用(C,C++中具體細微操做不盡相同, 本文以C++爲準).程序員

(1)局部靜態變量  編程

(2)外部靜態變量/函數編程語言

(3)靜態數據成員/成員函數函數

下面就這三種使用方式及注意事項分別說明學習

(1)局部靜態變量spa

定義在代碼塊中,只作用於代碼塊內設計

 

#include<iostream>blog

using namespace std;遊戲

int global = 3;

static int s_external = 4;

void func(){

static int sta = 1; //這裏就是局部靜態變量 只初始一次,

sta++;

cout << sta << endl;

}

int main(){

func();//這裏會輸出2

       func();//這裏會輸出3

system("pause");

return 0;

}

如此就能夠看出靜態局部變量的做用了。

(2)外部靜態變量/函數

這裏的靜態變量和函數,就不是用於區分存儲的可持續了,而是區分是不是內部連接的(通俗說就是外部不可用)

    用例子說明:

    在test1.cpp 

#include<iostream>

using namespace std;

int global = 3; //靜態外部變量 能在外部文件中使用

static int s_global = 4;//靜態內部變量只能在本文件中使用

extern void external_global(){  //靜態外部函數

cout << "func_external_global" << endl;

}

static void external_static(){ //靜態內部函數

cout << "func_internal_static" <<endl;

}

在test2.cpp

 

#include<iostream>

using namespace std;

int main(){

extern int global ;//引用文件外的外部連接的變量。

cout << global << endl;

//extern int s_global;

//cout << s_global << endl; 這些都是不容許的由於s_global 只能在test1.cpp中使用

extern void external_global();

extern void external_static(); //引用這些外部的函數。這裏雖未報錯,但沒法使用

external_global();

//external_static(); //由於是靜態的函數沒法使用。

system("pause");

return 0;

}

 

下面順便添加個與此無關的。

2.Menu.h內容以下:

 #ifndef  MENU_H

   #define MENU_H

 //int global=13

 static global =13

   int add(int a,int b);

   int minus(int a, int b);

   #endif

3.add.cpp內容以下:

#include "Menu.h"

int add(int a, int b)

{

return a+b;

}

4.minus.cpp內容以下:

#include "Menu.h"

int minus(int a,int b)

{

return a-b;

}

4.main.cpp內容以下:

#include

#include "Menu.h"

int main()

{

int a,b;

a=1;

b=2;

printf("%d",add(1,2));

printf("%d",minus(1,2));

return 0;

}

這種狀況下代碼沒有問題。

若是你也想成爲程序員,想要快速掌握編程,趕忙關注小編加入學習企鵝圈子吧!

裏面有資深專業軟件開發工程師,在線解答你的全部疑惑~編程語言入門「so easy」

資料包含:編程入門、遊戲編程、課程設計等。

免費學習書籍:


 

免費學習資料:


 

可是一旦你「static global =13」代碼部分,不註釋就不能夠用了。你必須將add.cpp 和 minus.cpp的#include"Menu.h" 去掉,這樣才能夠防止重複被定義。由於這些.cpp文件會屢次從新定義int global .會有屢次include"Menu.h"

相關文章
相關標籤/搜索