c的函式中的static變數初始值一定要是常量

時間 2021-08-30 10:38:34

1樓:匿名使用者

static變數中文名叫靜態變數。它與普通的變數比起來有如下幾個區別:

1)位置:靜態區域性變數被編譯器放在全域性儲存區.data,所以它雖然是區域性的,但是在程式的整個生命週期中存在。

2)訪問許可權:靜態區域性變數只能被其作用域內的變數或函式訪問。也就是說雖然它會在程式的整個生命週期中存在,由於它是static的,它不能被其他的函式和原始檔訪問。

3)值:靜態區域性變數如果沒有被使用者初始化,則會被編譯器自動賦值為0,以後每次呼叫靜態區域性變數的時候都用上次呼叫後的值。這個比較好理解,每次函式呼叫靜態區域性變數的時候都修改它然後離開,下次讀的時候從全域性儲存區讀出的靜態區域性變數就是上次修改後的值。

2樓:匿名使用者

static變數初始值一定要是常量。 static變數中文名叫靜態變數。它與普通的變數比起來有如下幾個區別:

1)位置:靜態區域性變數被編譯器放在全域性儲存區.data,所以它雖然是區域性的,但是在程式的整個生命週期中存在。

3樓:xz巨集定義

靜態區域性變數的初始化表示式必須是乙個常量或者常量表示式。即使區域性靜態變數定義時沒有賦初值,系統會自動賦初值0(對數值型變數)或空字元(對字元變數);靜態變數的初始值為0。

因為靜態變數在編譯時就賦值了,而此時你的引數是個隨即數,比如說是100吧,所以你在傳參進來的話,除非是直接用引數給靜態變數賦值,要不然就會出問題

4樓:匿名使用者

最好不要這樣寫全域性變數在程式執行前《進入main》已經確定記憶體空間雖然在有些情況不會出錯但建議還是按照規範比較好!

5樓:繆立軍

可以這樣子的,已經在vc下驗證過了

6樓:汐_楓

但就這個函式是沒問題

c語言中是如何定義常量的啊?

7樓:迠寋漧

c語言定義常量常用的方法有以下2種:

第一種:巨集定義

#define n 3 // 定義了乙個常量為3的巨集n,在程式中n就代表3

第二種:給變數初始化賦值

int a = 2; // 定義了乙個int型變數,並賦值為2,其實這是用變數來定義常量

注:定義常量還是用巨集定義的比較多。

c語言中是如何定義常量的啊

8樓:劉世媛

我們在用c程式設計時有時需要定義不變的變數,即常量,有兩種方法。

例如:定義常量pi的兩種方式:

1. #define pi 3.1415926f;

2. const float pi 3.1415926f;

常量有整型常量、浮點型常量、字元型常量及字串常量。 『常量定義是指定義符號常量,用乙個識別符號來代表乙個常量,通過巨集定義預處理指令來實現。

格式:#define識別符號常量

由使用者命名的識別符號是符號常量名。作為符號常量名,一般大寫。一旦定義,在程式中凡是出現常量的地方均可用符號常量名來代替。

對使用了符號常量的程式在編譯前會以實際常量替代符號常量。

全域性變數和區域性變數的區別:

9樓:匿名使用者

#define count 60

這叫巨集定義,不叫常量

常量的定義:

const int count = 60;

形參指定型別,實參指定數值

10樓:天雲一號

c語言定義常量常用的方法有以下2種:

第一種:巨集定義

#define n 3  // 定義了乙個常量為3的巨集n,在程式中n就代表3

第二種:給變數初始化賦值

int a = 2;  // 定義了乙個int型變數,並賦值為2,其實這是用變數來定義常量

注:定義常量還是用巨集定義的比較多。

11樓:匿名使用者

常量的定義:

#define count 60

這就定義了乙個常量 count 它的值是乙個常量60 在整個程式中不變

關於實際引數和,形式引數:

可以這樣通俗的去理解:

主調函式中的引數是實際引數,被調函式中的引數是形式引數,比如說:如下**段

被調函式:

int max(int a,int b)

主調函式:

main()

在北調函式max(int a,int b)中a,b是形式引數在主函式中max(a,b)中的a,b是實際引數;

12樓:匿名使用者

可以用預處理命令#indefine

和const靜態定義個數便是常量

形參就是函式定義時,所給的引數;而實參就是在main函式中呼叫時所使用的引數,兩者可以相同也可以不相同。

13樓:匿名使用者

實參在主調函式中,形參在被調函式中

當使用的是值傳遞方式時,實參值傳遞給形參,但是形參不把值傳回實參,即單向傳遞。

當使用位址傳遞時,實參位址傳遞給形參,形參把位址傳回實參,是雙向傳遞。

14樓:

#define

定義在全域性區

15樓:☆行雲流水

#define count 100

實參在主調函式中,形參在被調函式中

正確的c語言常量是什麼?

16樓:仁昌居士

正確的c語言常量是指標常量。

在除了『c/c++』的一些高階程式語言中,『常量』可以被稱作,「在乙個資訊變化過程中,始終不發生改變的量」,其可以是不隨著時間變化的某些量的固定資訊;也可以表示為某一數值的字元(或字串),常被用來標識、測量和比較兩者的差異。

但在 『c/c++語言中』,『常量』如果還用『執行過程中不變的量』來描述,就顯得不太準確了,甚至是在具體使用時,這就是乙個錯誤的概念。在 『c/c++』中,常量實質是『指標常量』,雖然其看起來『符合常量的概念』,但是在實際執行中,其值或位址值是會發生變化的。

17樓:哥們兒會_臭臭

c語言的常量有整數常量,實型常量,字元常量,符號常量等。

1、整數常量

整數常量是指直接實用的整形常數,又稱整形常數或者整數,例如,1,-9等。整數常量可以是長整形、短整型、符號整型和無符號整型。

a)八進位制數

八進位制整數必須以0開頭,即以0作為八進位制數的字首。數字取值範圍為0—7.八進位制數常是無符號數

b)十進位制數

十進位制數是不需要在其面前加字首的。十進位制數中包含的數字0—9組成。

c)十六進製制數

常量前面使用0x作為字首,表示該常量是用十六進製制表示。十六進製制中所包含的數字由0—9以及字母a—f組成(十六進製制數中的字母可以使用a—f大寫形式,也可以使用a—f小寫形式。)

整數資料都以二進位制的形式儲存在計算機中,其數值以補碼的形式表示。乙個正數的補碼與其原碼形式相同,乙個負數的補碼是將該數絕對值的二進位制形式按位取反再加1.

2、 實型常量

實型稱浮點型,由整數和小數部分組成,其中用十進位制的小數點隔開。表示實數的方式由科學計數和指數方式兩種。

a)科學計數方式

科學計數方式就是使用十進位制的小數方法進行描述實型

b)指數方式

若實數非常大或非常小,使用科學計數方式則不利於觀察,此時可以使用指數方法顯示實型變數。使用字母e或者e進行指數顯示,如45e2表示4500,而45e-2表示的是0.45

在編寫實型常量時,可以在常量的後面加上那個符號f或者l進行修飾。

f表示該常量是float單精度型別,l則表示該常量是為long double長雙精度型別。

如果不在後面加上字尾,那麼預設的狀態下,實行常量為double雙精度型別。

3、   字元型變數

字元型常量可以分為字元常量和字串常量

a)字元常量

字元常量分為一般字元常量和特殊字元常量。

使用單撇號括起乙個字元的形式即字元常量。使用字元常量需要注意以下幾點:

字元常量只能用單撇號括起來, 不能使用單引號或其他括號。

字元常量中只能包括乙個字元,不能是字串。

字元常量是區分大小寫的。

單撇號代表定界符,不屬於字元常量中旳一部分。

單撇號裡面可以是數字、字母等c語言字符集中除』和\以外所有可現實的單個字元,但是數字被定義為字元之後則不能參與數值運算。

特殊字元常量就是轉義字元。轉移字元是c語言中表示字元的一種特殊形式,其含義是將反斜槓後面的字元轉換成另外的意義。

在使用注意字元時應注意:

轉義字元只能使用小寫字母,每個轉義字元只能看成乙個字元。

垂直製表符\v和換頁符\f對螢幕沒有任何影響,但會影響印表機執行響應操作。

在c語言程式中,使用不可列印字元時,通常用轉義符表示。

如果反斜槓之後的字元和他不構成轉移字元,則』\』不起轉義作用,將被忽略。

b) 字串常量

字串常量是一對用雙引號括起來的若干字串行。字串中字元的個數稱為字元的長度,長度為0的字串稱為空串。

c語言中儲存字串常量時,系統會在字串的末尾自動加乙個』\0』作為字串結束的標誌。

4、   符號常量

在c語言中,通常將程式中的常量定義為乙個識別符號,這個常量就叫做符號常量。在使用符號常量之前必須先進行定義,大多數情況下,符號常量用大寫英文本母表示。定義符號常量的一般形式:

#define 符號常量名  常量值

18樓:兄弟連教育北京總校

c語言中的常量一共有4種:

整數常量:integer-constant浮點常量:floating-constant列舉常量:

enumeration-constant字元常量:character-constant常量是乙個右值,可以把右值賦給乙個左值

int a = 1; 這裡的1確實是常量,是乙個整數常量

19樓:天理人心菽

常量是在程式運算過程中不變的量。 常量在程式中經常直接出現,如123、3.14159、『a』、「computer」,此時只要求它們符合相應型別資料的表示方法。相應於各種資料型別,有整型常量、浮點型常量、字元型常量及字串常量。

常量定義是指定義符號常量,用乙個識別符號來代表乙個常量,通過巨集定義預處理指令來實現。 格式:#define 識別符號常量 由使用者命名的識別符號是符號常量名。

作為符號常量名,一般大寫。一旦定義,在程式中凡是出現常量的地方均可用符號常量名來代替。 對使用了符號常量的程式在編譯前會以實際常量替代符號常量。

例:#define pi 3.14

函式中能定義區域性static變數嗎,為什麼不行

凌培勇 為什麼你要在函式裡定義static呢,statis 是類變數,在類初始化的時候就要載入 這跟jvm執行機制有關,定義static之後表明在執行程式前,就要自動對其進行初始化,你的static變數寫在了非static方法中,jvm不會在程式執行前就初始化這個方法,但是裡面又包含了需要初始化的變...

C語言中static變數的賦值問題

小夏在深圳 static int a 0 執行期時初始化一次,下次再呼叫時,不進行初始化工作如下 printf d a a int main staticlocalvar 第一次呼叫,輸出a 0 staticlocalvar 第二次呼叫,記憶了第一次退出時的值,輸出a 1 return 0 擴充套件...

php中static靜態變數和普通變數的區別

愛笑的高大傻 php中static 靜態變數和普通變數的區別 在變數的前面加上static 就構成了靜態變數 static 變數 static變數和普通變數的區別在於非靜態全域性變數的作用域是整個源程式,當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。而靜態全域性變數則限...