在C語言中關於全域性變數 靜態變數 的用法1 全域性變數與靜態變數的區別2 用static定義變數 常量以及定

時間 2021-09-08 04:26:35

1樓:匿名使用者

1. (1)某個檔案中的全域性變數是任何其他檔案都可見的,只要extern宣告一下,任何檔案均可使用

(2)若在定義變數前加static,說明該變數只有該檔案內部可以使用,其他檔案無法使用。(即static限定了變數的可見性,但生命週期仍是全域性的)

2. static char a;

static const char a;

static const char* const a;

給lz推薦本書:《c++ primer》第四版,這樣的問題可以在這本書上找到很詳細的答案

lz不懂可繼續追問。

2樓:匿名使用者

全域性變數是其他檔案都能用的

靜態變數不可以

const static int cs = 100;

3樓:

全域性變數是其他檔案都能用的

靜態變數不可以,具有記憶性,記憶性!

const static int cs = 100;

4樓:0半人半神

1,全域性變數定義於所有函式之外,可以用在程式內的任何地方。

而靜態變數相當於將其固定在變數定義的地方,使其無法在其他地方被使用。還有貌似靜態變數存放資料的地點也和別的不太一樣。

2 static int k=0;static const(這裡const將後面的k轉換成常量) int k=0;

新手求教,c語言中 靜態區域性變數與靜態全域性變數的區別。

5樓:天雲一號

#include

static int a = 5;  // 靜態全域性變數(函式外面)

void main()

c語言靜態區域性變數和全域性變數有什麼區別,不都是在整個程式中都有效嗎。希望能舉個簡單的例子,謝謝啦

6樓:

(1)靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。

(2)靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後, 儘管該變數還繼續存在,但不能使用它。

(3)對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。

根據靜態區域性變數的特點, 可以看出它是一種生存期為整個原始檔的量。雖然離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。 因此,當多次呼叫一個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。

雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的***(尤其是短名全域性變數的變數名汙染很嚴重),因此仍以採用區域性靜態變數為宜。

簡單的說靜態區域性變數與全域性變數最明顯的區別就在於:全域性變數在其定義後所有函式都能用,但是靜態區域性變數只能在一個函式裡面用。

7樓:醉棋

靜態區域性變數只能在定義該變數的函式內使用,全域性變數可以在任意函式內使用。

8樓:陸美富

首先要清楚“整個程式”這個概念。

一個程式由多個編譯單位組成。每個可進行單獨編譯的原始檔稱為“編譯單位”。

在同一編譯單位內用extern說明符來擴充套件全域性變數的作用域。

當用static說明符說明全域性變數時,此變數可稱作“靜態”全域性變數。靜態全域性變數只限於本編譯單位使用,不能被其它編譯單位所引用。

9樓:

按儲存區域分:全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區

按作用域分:全域性變數在整個工程檔案內都有效;靜態全域性變數只在定義它的檔案內有效;靜態區域性變數只在定義它的函式內有效,只是程式僅分配一次記憶體,函式返回後,該變數不會消失;區域性變數在定義它的函式內有效,但是函式返回後失效。

全域性變數和靜態變數如果沒有手工初始化,則由編譯器初始化為0。區域性變數的值不可知。

**如下:

//test.cpp

#include

extern int a;//變數宣告,不是定義static int b=5;

void func1()

//main.cpp

int a;

int b=10;

void func2()

void func1();

void main()

輸出結果為52012

10樓:幽靈詛咒師

單就你這個問題,回答就一句話,作用域不一樣。

簡單例子:

靜態區域性變數:只有定義這個變數的當前cpp能找到他的定義,其他cpp哪怕extern這個變數,包含對標頭檔案,要用,編譯都會報錯找不到。(至於生命週期,好比a.

cpp裡main函式,b.cpp裡定義一個b類,類裡面一個函式裡static int i(預設為0),並列印,賦另外一個值2,再列印,a.cpp裡呼叫b類裡這個函式兩次,第一次列印0,2;第二次列印2,2,就是說明這個變數在程式沒關的時候,哪怕出了b.

cpp,static int i的靜態區域性變數的值還在(但是你就是沒法直接在a.cpp裡extern來用這個i,要想這麼幹,請用全域性變數))

ps:靜態區域性變數和靜態全域性變數也差不多這意思,作用域,前者定義他的大括號裡可用,後者定義它的cpp檔案裡隨便用。靜態就是指作用域只在定義它的範圍(區域性or全域性)

全域性變數:同一個程式,其他cpp裡面只要extern這個變數,就能找到這個變數,且只要加好鎖,這個程式沒關掉,這個變數的數值就有確實含義(沒被delete)

11樓:小飛花兒的憂傷

作用域不同;編譯時期不同

c語言中變數的平方怎麼輸入,C語言中變數的平方怎麼輸入

天雲一號 在c 中,變數a的平方可以有2種方式進行輸入 1 直接本身相乘a a 2 用函式pow進行求變數a的平方,即pow a,2 注 函式pow的用法如下 函式格式 double pow double x,double y 功 能 計算x的y次冪 返 回 值 計算結果 當使用pow函式時,需要將...

C在方法中引用另類的全域性變數,C 在方法中引用另一個類的全域性變數

像這種需求應該在類a中宣告靜態的flag 然後在類a的時間中賦值,之後再通過類b引用就是賦值後的值了 public class a 在類b中 通過a.flag 就能引用了。c 中一個類如何訪問另一個類的變數 基本上就是一樓的方法 c 如何呼叫其他類的變數 b類裡面的變數宣告的時候帶不帶static?...

大俠們,跪求關於Axure全域性變數的問題

說了這麼多,就是要問怎麼改變文字樣式?那和全域性變數有什麼關係?沒看懂不過你可以這樣來改變文字樣式 首先選擇你要改變的部件,然後給它一個選擇狀態下的樣式,如下圖1然後你就可以用其他任何時間來選擇它了,如圖2,比如你可以隱藏動態面板時選擇這個部件,它就會用選擇狀態下你設定的樣式了 xinsile哭了 ...