C程式語言之細節 二

2021-04-20 18:02:08 字數 1361 閱讀 6040

****,昨天的竟然又沒提交上,電腦上還沒備份,鬱悶!

1, c語言中,所有函式引數都是通過值傳遞的。

傳遞給被呼叫函式的函式值存放在臨時變數中。c語言中,被呼叫函式並不能修改主調函式的引數值,而只能修改私有的臨時副本值。

若要呼叫函式修改主調函式引數值,可以採用指標。

2, c語言中字串常量以字元陣列的形式儲存。

strlen(s)返回字串常量s的長度,但不包含末尾的/0.

列舉是乙個常量整形值的列表。若沒有顯式說明,第乙個列舉名的值為0。

不同列舉中的名字必須乎不相同,而同一列舉中不同的名字可以有相同的值。

列舉比#define的優勢:

a, 列舉可以自動生成常量值。

b, 宣告列舉型別變數,編譯器不檢查這種型別的變數中儲存的值是否為該列舉的有效值,但列舉變數做此檢查。

c, 除錯程式可以以符號形式列印列舉變數的值。

3,外部變數

所有外部變數都必須定義在任何函式之外,且只能定義一次,外部變數定義後,編譯程式將為它分配儲存空間。函式在使用外部變數時必須宣告變數,可以使用extern或者是隱含表示。

非自動變數只能進行一次初始化操作。

預設情況下,外部變數與靜態變數的值被初始化為0;自動變數的值為未定義值,即為無效值。

4,常量表示式在編譯時求值,而不是執行時求值。

const修飾陣列時,表示陣列中的所有值都不能被修改。

5,自增自減只作用於變數。

6,按位運算子

只可作用於int, char, short, long

& ! ^(異或)<<(左移) >>(右移) ~取反

7, switch

switch表示式的值是「常量整數值」。

continue語句只用於迴圈語句,不用於switch語句。

8,extern

extern表明此處為外部變數宣告(非定義)

用static宣告限定外部變數與函式,可以將其後宣告的物件的作用域限定為被編譯原始檔的剩餘部分。

用static限定外部變數,可以達到隱藏外部變數的目的。

如果將函式宣告為static,則該函式名除了對該函式宣告所在的檔案外,其餘檔案都無法訪問。

static修飾區域性變數,意味著不管其所在的函式是否被呼叫,它都一直存在。即它是一種只能被特定函式使用但一直占用儲存空間的變數。

對於外部變數與靜態變數而言,初始化表示式必須是常量表示式,且只初始化一次。

9, register宣告只適用於自動變數和函式的形參。

無論暫存器變數是否放在暫存器中,它的位址都不可訪問。

10, 預處理器中的#

形參不允許用帶引號的字串代替。但在替換文字中,若引數名以#作為字首,那麼它將由帶引號的實際引數替換。

##用於連線實際引數。

C語言之指標二

函式指標 如果在程式定義了乙個函式,在編譯時,編譯系統為函式 分配一段儲存空間,這段儲存空間的起始位址,稱為這個函式的指標 函式名就是函式開始的位址 函式二級指標可以修改函式指標的指向 函式指標,不僅僅是位址,必須明確函式指標型別和輸出引數型別和數量 函式名可以作為引數傳遞給函式指標 include...

C語言之指標(二)

二 指標變數做函式引數 在使用函式時我們一般都使用的是基本型別做函式引數,如 int double float等等。那在使用指標變數做函式引數和基本型別做函式引數有什麼不同呢?1 在使用基本型別做函式引數時是把實參的值傳遞給形參,在被調函式中形參值的改變不能改變主函式中實參的值,如下 這個程式是想通...

程式語言之C語言基礎(一)

c語言中的基本資料型別有 在記憶體中基本型別對應有其位元組長度 在32 位的系統上 short 佔據的記憶體大小是2 個byte int佔據的記憶體大小是4 個byte long佔據的記憶體大小是4 個byte float佔據的記憶體大小是4 個byte double佔據的記憶體大小是8 個byte...