C關鍵字的解析

2021-06-13 12:53:29 字數 936 閱讀 3581

以下對一些c關鍵字的特別用法進行剖析:

關鍵字修飾的是最近的變數即就近原則

extern和volatile: extern和volatile各自單一的用法就不多說了。當兩個在一起使用時表示 介面(extern修飾)易變(volatile修飾)變數;用法:

main.c檔案中 volatile uint8 frequency_change_flag=0;

main檔案之外 extern volatile uint8 timer_count;

注意這裡的extern後也要用volatile宣告

volatile修飾陣列: uint8 volatile dis_buffer[15]=;

表示陣列dis_buffer裡的元素是易變的 下面拉段論壇裡的文字助於理解:

volatile int *a[x];這樣好像是a指向的地方

--- 這其實是說 *a[0], *a[1] 是易變的,而非「a指向的地方」

a指向的地方和a[x]指向的地方都易變要怎麼寫?

------ 其實我聽不懂「a指向的地方」是啥意思,a是陣列名,本來就不可更改;要a[x]為volatile應當寫成 int* volatile a[x];

如果b裡面的p是易變的呢?直接結構體裡volatile int *p??

------ 同理 volatile int *p 指 *p 為 volatile,欲p 為 volatile當寫成int*volatile p

return: 函式可以返回數值的區域性變數即傳值,但不能返回指標和陣列即傳址。

函式不能通過返回指向棧記憶體的指標(注意這裡指的是棧,返回指向堆記憶體的指標是可以的)

。那如果真的想返回區域性變數的位址(即陣列和指標)怎麼辦。那就把這個變數或陣列static修飾吧,由於static修飾後,這個變數和陣列是一直存在的,指標指向它(變數或陣列)沒有問題的。

紅色部分是這裡拉的,你可以參考下

C語言關鍵字解析

c語言關鍵字解析 c語言關鍵字有32個,如表1所示。雖然簡單,但還是讓一些初學者犯錯,譬如sizeof,好多初學者都認為是函式,其中包括我的一些同學,他們學過有好多年了,如此看來,有時我們追求高深的內容,往往會忽略基礎的簡單的內容!表1 c語言標準定義的 32個關鍵字 關鍵字 意義 auto 宣告自...

this關鍵字的解析

this關鍵字的作用 1 表示類中的屬性。class person public string getinfo public class thisdemo02 2 使用this呼叫本類的構造方法。構造方法間可以互相呼叫,使用this 引數 的形式完成。注意 在使用this關鍵字呼叫其他構造方法時,t...

C語言深入解析 關鍵字

此文僅參考陳正衝老師所寫 c 語言標準定義的 32 個關鍵字 關鍵字 意 義 auto 宣告自動變數,預設時編譯器一般預設為 auto int 宣告整型變數 double 宣告雙精度變數 long 宣告長整型變數 char 宣告字元型變數 float 宣告浮點型變數 short 宣告短整型變數 si...