C語言中,形參的預設儲存類別為A auto B static C register D extern

2021-08-16 03:09:13 字數 2738 閱讀 5870

1樓:匿名使用者

c。在函式內部或複合語句內定義變數時,如果沒有指定的儲存型別或使用了auto說明符,系統就認為所定義的變數具有自動類別。

形參即函式的自變數,其初值**於函式的呼叫。只有在程式執行過程中呼叫了函式,形參才有可能得到具體的值,並參與運算求得函式值。形參表相當於變數說明,但應特別注意:

此處只能使用型別識別符號,而不能直接使用型別。

用auto(或省略)來區分說明的區域性變數。當執行進入區域性變數所在的塊時,在棧上為變數分配儲存,退出塊時,儲存單元被**。具有自動儲存期的變數在進入宣告該變數的程式塊時被建立,它在該程式塊活動時存在,退出該程式塊時撤銷。

在函式內部定義的變數成為區域性變數。

擴充套件資料:

1、register關鍵字提示編譯器把區域性變數或函式的形參儘可能放入cpu的暫存器中,以便快速訪問。因此變數的位元組長度不應該超過暫存器的長度。不要用取地址符(&)去獲得此變數的記憶體地址。

例如:register int miles;

2、static是全域性變數的預設儲存類。例如:

static int count;

int road;

main()

printf("%d\n", count);

printf("%d\n", road);

count與road兩個變數都是預設的static儲存類。

3、extern儲存類是指全域性變數可以被各個物件模組訪問。使用extern關鍵字時,表示變數已經在別處定義,所以不能在此處初始化。

2樓:

形參是放在堆疊中的除非特殊宣告的函式如cxxbuilder fastcall!所以選a;

引數一般不會宣告為暫存器變數的!這樣的函式沒有辦法呼叫!

因為形參放在何處由函式的呼叫約定來確定,而不是由引數的儲存型別決定!

同樣外部變數或靜態變數也不會,不能定義成暫存器變數。

暫存器變數只適合函式內部定義的,用完不管的,通常是迴圈的計數變數!

靜態和外部是常用的兩個儲存型別。

外部變數一定在函式外部定義,這就是c,c++,外部變數中的「外部」的真實含義。

靜態變數,可以定義在

1)函式外部,屬於檔案模組的,表示檔案內部的具有全域性性質的區域性變數(儲存在全域性資料區。

2)函式內部,第一層大括號內,屬整個函式全域性性質的區域性變數。 儲存在全域性資料區。

3)函式內部的任何非資料定義的兩個大括號內部;

分程式(c一般叫語句組)屬整個分程式全域性性質的區域性變數。儲存在全域性資料區。

而函式內的非靜態資料預設為自動變數,所auto一般會省略不寫。

外部變數,一般定義時也省略掉extern,

只有在標頭檔案裡,和使用非本檔案定義的外部變數時,以及函式內部引用外部變數時,

才寫上extern 表示這是引用說明,不是定義,要看定義別處找找。

如果本檔案沒定義,就是引用別的檔案的同名變數!

所以除了函式引數(形參)和函式內部非靜態變數,再沒有自動變數了。

函式內部可以定義三種變數,區域性靜態變數,自動變數,暫存器變數;外部變數在函式內部只能有引用說明!不能在函式內部定義!

extern外部,靜態static兩個儲存型別是相對的。

外部變數,全部在函式外部定義。外部變數,分配在全域性資料區,是全域性變數。

外部是相對函式的。

靜態有定義在函式內部,和函式外部的區分,還有函式內部全域性,和函式內部某一語句組內部的區分,實際上,無論哪種靜態變數,都屬於全域性變數,分配在全域性資料區。

ps:除了變數外,函式也有 extern外部,靜態static 兩種儲存型別。

由於c語言不允許函式內部定義函式。

所以函式只有這兩種儲存型別。

函式的預設儲存型別是extern, 所以無論定義,還是引用說明,通常都會省略extern;

c語言中,只有寫了static的函式,才是靜態函式。

c語言中,函式可以在函式內部,有引用說明,不會在函式定義在函式內部。

c++中 類也有靜態變數和靜態函式;

由於類的靜態函式和靜態變數的外部定義會有類名和作用域限定符(也叫作用域運算子)::作為字首,所以類外定義不寫static;

類也有靜態變數和靜態函式的含義是這個變數和函式屬於整個類的(實際也是全域性變數,分配在全域性資料區),除了類和他的成員,外不能使用它了。

類通過類名,成員通過它本身(obj. ;pobj->; (*pobj). refobj. 類名::)使用;

只要類本身定義了。

不通過類的物件,就可以使用類的靜態變數和靜態函式。

其他成員,除了建構函式外都必須通過通過類的物件,才能使用。

3樓:匿名使用者

a.auto b.static c.register d.extern

a 的變數在堆疊裡,自然是執行時

b 是靜態變數

c 是暫存器變數,使用的是cpu的暫存器

d 是全域性變數

bd都是放在資料段中的,編譯的時候就已經確定了位置(有的編譯器對b和d的處理不一樣)

1.在c語言中,形式引數的預設儲存類別是( )。 選項: a、auto b、register c、static d、extern

4樓:匿名使用者

1、c2、b

3、沒有i的初值,所以d

4、b5、d

6、g7、a

8、a9、1

10、2

11、2

12、2

13、2

14、1為8

c語言中,形參可以是常量,變數或表示式,這句話為什麼是錯的

說好的是形參。不是實參。實參就是對的。我覺得樓主可能沒有了解什麼是形參。當然。這個可以不用去理解也不影響 質量的。但是。理論就是這麼說的。最好看懂。形參只能是變數,在被定義的函式中,必須指定形參的型別。沒有確定的值 形參變數在未出現函式呼叫時,並不佔用記憶體,只在呼叫時才佔用。呼叫結束後,將釋放記憶...

c語言關於實參形參表示的方式的問題

1,形參前面加了void是空函式 意思是不要求返回值麼?那這題不是把宣告部分全部返還了麼?增加void表示不用返回值,即在函式中要使用return時,不用帶值。比如返回值為int型,那麼要用類似return 0 而本例直接return 即可。void inv int x int n 中x,n都是傳入...

C語言中變數的儲存型別有哪幾種,儲存方式哪幾種?謝嘍

在c語言中,對變數的儲存型別說明有以下四種 1 auto 自動變數 2 register 暫存器變數 3 extern 外部變數 4 static 靜態變數 所謂儲存型別是指變數佔用記憶體空間的方式,也稱為儲存方式。變數的儲存方式可分為 靜態儲存 和 動態儲存 兩種。1 靜態儲存變數通常是在變數定義...