c語言學習day05

2021-09-19 23:39:36 字數 674 閱讀 9528

struct s
以上**涉及到位元組對齊問題,編譯器為使cpu執行效率高,採取以空間換時間的方法,一次讀取int的長度

結構體的變數定義順序不同,size也不一樣

e.g:

struct s1

struct s2

s1和s2的位元組數就不一樣,s2是8個,因為e是short型,可以佔給a分配的多餘的3個位元組中的2個,

記憶體從低位址到高低址依次分布**區、堆區、棧區、核心區,核心區通常我們編寫的指標不能訪問,低位址的起始部分是受保護區域,也不能訪問,一旦訪問,就會出現段錯誤

**區可分為唯讀資料段、全域性資料段(有初始值,無初始值)

區域性變數前加上static,該區域性變數就會放入全域性資料段,只是區域性有效(在大括號裡有效),static區域性變數不會隨著函式的結束而被銷毀

棧空間執行時才有,主要儲存函式內部變數,函式一旦返回,對應棧的空間就被釋放,生存週期比較短

堆空間執行時才有,可以自由管理分配和釋放空間,生存週期由程式設計師決定,不由系統決定

唯讀資料段又稱為靜態段,程式結束時才釋放記憶體,生存時間最長

void func()
以上**是典型的記憶體洩漏**,p指向了一段堆空間,但函式一結束,p被釋放了,但開闢的堆空間沒有釋放,需要free

C語言學習day05

字串格式化輸入輸出 在螢幕輸出 後面的d也會輸出 printf d n int a 123 printf a2 5d n a 以5個字元輸出,沒有字元以空字元填充,預設右對齊 printf a2 05d n a 以5個字元輸出,沒有字元以0填充,預設右對齊 printf a2 5d n a 以5個字...

C語言學習日記Day05函式的宣告

函式宣告 extern 返回值型別 函式名 引數列表 關鍵字externa可以省略 extern int add01 int a,int b intadd01 int a,int b 宣告 就像是給乙個程式的標準 intmain 函式定義 在乙個專案中 函式的名字是唯一的 intadd01 int ...

C 學習筆記 day05

1 變數的儲存 1 記憶體是一塊空間,把其中的每個位元組做了編號,為了以後計算機能通過編號找到資料 2 編址方式 絕對編址 在整個程式中使用 相對編址 位元組相對於邏輯0偏移量,在程序中使用 4 儲存位址 指標 儲存變數的位址 指標的型別由將要儲存的位址的變數型別決定 int 只能儲存int變數的位...