C 記憶體與命名空間

2021-08-15 07:14:38 字數 784 閱讀 1359

//假設頭檔名稱為zmyyq.h

#ifndef zmyyq_h_

......

#endif

作用域和鏈結

自動變數的初始化:可以使用任何在宣告時其值為已知的表示式來初始化自動變數。由於自動變數的數目隨函式的開始和結束而增減,因此程式必須在執行時對自動變數進行管理。

棧 總結各個區

動態儲存區(堆):(動態分配)

動態儲存區(棧):(動態分配)

靜態儲存區:(靜態分配)

程式**區:(靜態分配)

說明符與限定符

cv限定符

c表示const,它表明記憶體被初始化後,程式便不能再對它進行修改。它對於預設儲存型別稍有影響。在預設情況下,全域性變數的鏈結性為外部的,但const全域性變數的鏈結性是內部的,也就是用了const就相當於加上了static。

v表示volatile,該關鍵字表明:即使程式**沒有對記憶體單元進行修改,其值也可能會發生變化(大多是硬體改變某些取值,也有可能是兩個程式共享一塊記憶體)這個關鍵字的作用是為了改善編譯器的優化能力,假設編譯器發現程式在幾條語句中兩次使用了某個變數的值,則編譯器可能不是讓程式查詢這個量兩次,而是將這個值快取到暫存器中,假設變數的值在這兩次使用之間都不會變化,如果不設定這個volatile則告訴編譯器不進行這種優化。

查詢函式的方式

命名空間的其他特性

命名空間及其用途:下面是一些指導性的準則

c++的儲存方案

C 記憶體模型與命名空間

hpp檔案與.h檔案都是header檔案,但是.hpp檔案中包含了函式實現,減少了需要編譯的.cpp檔案數量。在ide中,不要將標頭檔案加入到專案列表中,只需源 標頭檔案由 include指令管理。為什麼.hpp中包括模板函式的實現,當該.hpp檔案被多個cpp用 include包含,鏈結時不會出現...

C 命名空間 預設命名空間與匿名命名空間

2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...

C 動態記憶體分配與命名空間

1 c 中的動態記憶體分配 malloc是基於位元組來進行動態記憶體分配的,new則是基於型別來進行動態記憶體分配 變數申請 type pointer new type 從堆空間獲取乙個新的type型別的空間 使用和c語言一樣 delete pointer 這裡指的是pointer所指向的那個元素的...