目錄
知識點1:普通局部變量、普通全局變量、靜態局部變量、靜態全局變量
2、函數可以返回靜態局部變量的地址 (因爲靜態局部變量在函數結束後不被釋放)
知識點1:普通局部變量、普通全局變量、靜態局部變量、靜態全局變量
-
普通局部變量
定義形式: 在{ }裏面定義的變量就是局部變量
作用範圍: 離他最近的{ }之間
生命週期: 離他最近的{ }結束局部變量就被釋放
存儲空間: 棧區
注意事項: 局部變量不初始化內容隨機,不同作用範圍的局部變量可以同
-
普通全局變量
定義形式: 在函數外定義的變量就是普通全局變量
作用範圍: 當前源文件以及其他源文件(加extern修飾)
生命週期: 整個進程
存儲空間: 全局區
注意事項:
//普通全局變量不初始化內容爲0
//普通全局變量和普通局部變量同名(就近原則)
-
靜態局部變量(static修飾的局部變量)
靜態局部變量
定義形式:{}裏面定義 且static修飾 就是靜態局部變量
作用範圍:離他最近的{}之間有效
生命週期: 整個進程
存儲空間:全局區
注意事項:
普通全局變量 不初始化 內容爲0
靜態局部變量 如果初始化語句執行多次 只有第一次有效
-
靜態全局變量
靜態全局變量
定義形式: 函數外定義且static修飾 就是靜態全局變量
作用範圍: 只能在當前源文件有效
生命週期: 整個進程
存儲空間: 全局區
注意事項: 靜態全局變量不初始化內容爲0
-
普通函數 與 靜態函數(加static修飾)
普通函數:當前源文件 以及其他源文件(extern 修飾) 都可以使用
靜態函數:只能在當前原文件使用
知識點2:內存的分區詳解
知識點3:內存操作注意事項
-
1、函數不要返回局部變量的地址。
-
2、函數可以返回靜態局部變量的地址 (因爲靜態局部變量在函數結束後不被釋放)
-
3、 不要操作 已經被釋放的堆區空間。
-
4、不要重複釋放同一段堆區空間。
知識點6:函數內部給外部指針變量申請空間
1、p沒有指向有效空間
2、解決上述問題:通過返回值
函數返回值與外部指針變量是同一級別的指針
3、解決上述問題:將 &p傳遞給函數