
static 的用法
static關鍵字是C, C++中都存在的關鍵字, 它主要有三種使用方式, 其中前兩種只指在C語言中使用, 第三種在C++中使用(C,C++中具體細微操作不盡相同, 本文以C++為準).
(1)區域靜態變數
(2)外部靜態變數/函式
(3)靜態資料成員/成員函式
下面就這三種使用方式及注意事項分別說明
(1)區域靜態變數
定義在代碼塊中,只做用于代碼塊內
#include<iostream>
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"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251350.html
標籤:C
上一篇:函式指標
