c學習筆記:內存(普通局部變量、普通全局變量、靜態局部變量、靜態全局變量、普通函數與靜態函數、內存的分區、動態申請堆區空間、函數內部給外部指針變量申請空間 )

目錄

知識點1:普通局部變量、普通全局變量、靜態局部變量、靜態全局變量

普通局部變量

普通全局變量

靜態局部變量(static修飾的局部變量)

靜態全局變量

普通函數 與 靜態函數(加static修飾)

知識點2:內存的分區詳解

知識點3:內存操作注意事項

1、函數不要返回局部變量的地址。

2、函數可以返回靜態局部變量的地址 (因爲靜態局部變量在函數結束後不被釋放)

3、 不要操作 已經被釋放的堆區空間。

4、不要重複釋放同一段堆區空間。

知識點6:函數內部給外部指針變量申請空間

1、p沒有指向有效空間

2、解決上述問題:通過返回值

3、解決上述問題:將 &p傳遞給函數


 

知識點1:普通局部變量、普通全局變量、靜態局部變量、靜態全局變量

  • 普通局部變量

定義形式: 在{ }裏面定義的變量就是局部變量   

作用範圍: 離他最近的{ }之間

生命週期: 離他最近的{ }結束局部變量就被釋放

存儲空間: 棧區

注意事項: 局部變量不初始化內容隨機,不同作用範圍的局部變量可以同

  • 普通全局變量

定義形式: 在函數外定義的變量就是普通全局變量
作用範圍: 當前源文件以及其他源文件(加extern修飾)
生命週期: 整個進程
存儲空間: 全局區
注意事項:
//普通全局變量不初始化內容爲0
//普通全局變量和普通局部變量同名(就近原則)
 

  • 靜態局部變量(static修飾的局部變量)

靜態局部變量
定義形式:{}裏面定義 且static修飾 就是靜態局部變量
作用範圍:離他最近的{}之間有效
生命週期: 整個進程
存儲空間:全局區
注意事項:
普通全局變量 不初始化 內容爲0
靜態局部變量 如果初始化語句執行多次 只有第一次有效

  • 靜態全局變量

靜態全局變量
定義形式: 函數外定義且static修飾 就是靜態全局變量
作用範圍: 只能在當前源文件有效
生命週期: 整個進程
存儲空間: 全局區
注意事項: 靜態全局變量不初始化內容爲0

  • 普通函數 與 靜態函數(加static修飾)

普通函數:當前源文件 以及其他源文件(extern 修飾) 都可以使用
靜態函數:只能在當前原文件使用

 

知識點2:內存的分區詳解

 

知識點3:內存操作注意事項

  • 1、函數不要返回局部變量的地址。

  • 2、函數可以返回靜態局部變量的地址 (因爲靜態局部變量在函數結束後不被釋放)

  • 3、 不要操作 已經被釋放的堆區空間。

  • 4、不要重複釋放同一段堆區空間。

 

知識點6:函數內部給外部指針變量申請空間

1、p沒有指向有效空間

2、解決上述問題:通過返回值

函數返回值與外部指針變量是同一級別的指針

3、解決上述問題:將 &p傳遞給函數

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章