c c 裡的幾個容易困擾的點

2021-07-23 18:38:50 字數 1161 閱讀 5486

下面列出幾個c/c++語言裡比較困擾工程師的語言點,

1. 為什麼需要volatile關鍵字?

從字面上解釋,volatile是」易變的,不穩定的「,通過這個關鍵字的定義,告訴編譯器這個值一定要從指定的位址的memory直接讀取,否則讀取的值可能是data cache中儲存的值,和實際位址memory中的值可能不一樣。

volatile unsigned long *addr;

2. 為什麼使用const關鍵字?

從字面上解釋,const是」常數,不變的「,通過這個關鍵字定義,防止一些情況下這個變數被意外修改。

另外,const定義的陣列會被儲存到flash或者硬碟,只有在需要的時候才會被載入到ram,這樣還能節約ram的空間。

常見的應用,在嵌入式程式設計中,裝置的名稱被定義為const型別,如

const char *name;
關於const的使用技巧,可以參見下面的例子和分析(第3/4/5用的很少)

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前兩個的作用是一樣,a是乙個常整型數。第三個意味著a是乙個指向常整型數的指標(也就是,整型數是不可修改的,但指標可以)。第四個意思a是乙個指向整型數的常指標(也就是說,指標指向的整型數是可以修改的,但指標是不可修改的)。最後乙個意味著a是乙個指向常整型數的常指標(也就是說,指標指向的整型數是不可修改的,同時指標也是不可修改的)。

3. 為什麼使用static關鍵字?

從字面上看,static是」靜態的「,static型別的資料,即使是在函式內宣告的static變數,也是存放在全域性資料區(堆)中;另外,經過static修飾過的全域性變數或者函式,其作用域在模組內部,這種限制保證了**的安全性。

1). 在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。

2). 在模組內(但在函式體外),乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是乙個本地的全域性變數。

3). 在模組內,乙個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的模組的本地範圍內使用。

4. 指標和引用的異同?

C C 筆記 01 容易出錯的幾個庫函式

大多數庫函式的使用都不會有什麼問題,它們的意義和用法明白而直接,基本上都能正確的使用它們,但也有一些例外情況,如一些常用到的庫函式表現出來的行為方式往往有悖於使用者的本意 尤其是我們初學者 今天我們就來討論一些常用到的庫函式,以及使用過程中可能出錯之處。我們先來看乙個簡單的例子 include in...

原創 傅利葉分析中幾個容易混淆的概念

傅利葉分析可以說是訊號處理最重要的基石之一。但傅利葉級數 傅利葉變換 離散時間傅利葉變換 離散傅利葉變換等幾個有點像又有點不像的概念,不僅經常搞得初學者暈頭轉向,有時候讓老手也有點糊塗。在開篇之前,先簡要介紹一下傅利葉分析有關的八卦舊聞。早在 19世紀初,法國數學家 物理學家傅利葉在研究熱傳導問題的...

原創 傅利葉分析中幾個容易混淆的概念

傅利葉分析可以說是訊號處理最重要的基石之一。但傅利葉級數 傅利葉變換 離散時間傅利葉變換 離散傅利葉變換等幾個有點像又有點不像的概念,不僅經常搞得初學者暈頭轉向,有時候讓老手也有點糊塗。在開篇之前,先簡要介紹一下傅利葉分析有關的八卦舊聞。早在 19世紀初,法國數學家 物理學家傅利葉在研究熱傳導問題的...