一:c語言儲存區劃分:
c語言分為以下幾個區:
1:**區:**區是唯讀的,該區域是用來存放程式的**的,記憶體由系統管理.存放cpu執行的機器指令。通常**段是可共享的,這使得需要頻繁被執行的程式只需要在記憶體中擁有乙份拷貝即可。**段也通常是唯讀的,這樣可以防止其他程式意外地修改其指令。另外,**段還規劃了區域性資料所申請的記憶體空間資訊。
2:靜態儲存區:該段包含了在程式中明確被初始化的全域性變數、靜態變數(包括全域性靜態變數和區域性靜態變數)和常量資料,該段儲存的變數可以自動釋放。
3:堆區:是交給使用者使用的一段記憶體,用來動態的分配記憶體,但是使用完後一定要釋放,否則會造成系統記憶體洩露。申請使用malloc 釋放需要free
4:棧區:存放函式的引數值、區域性變數的值,以及在進行任務切換時存放當前任務的上下文內容。
這個區的原則是先入後出,在裡面的區域性變數的記憶體隨著函式出棧,會被直接釋放。因此,當你在函式中使用指標返回乙個陣列的位址的時候,一定要malloc,不然return的值是不確定的。因為這段記憶體出棧就被釋放了。裡面的資料是隨機的未知的。當然,以下情況不需要malloc。
情況一:int .char .float …等非指標變數的時候,棧區會快取當前值。
情況二:當返回值是函式內的乙個const的變數的時候,這個變數是存在靜態儲存區的。所以不會被清清除。
情況三:在指標變數前面加乙個static,變數被存在靜態區,也不會被清除。
5:未初始化的資料段:存放的是全域性未初始化變數,和靜態為u初始化變數。
一:關鍵字:
static:
static型別分配在靜態儲存區,在程式整個執行期間都不釋放;
1:static,加在函式區域性變數前,這個變數是存在靜態資料區,函式出棧不會被清除。
static區域性變數在初次執行時進行初始化工作,且只初始化一次。
對於區域性靜態變數,如果不賦初值,編譯期會自動賦初值0或者空。
2:static在函式前修飾函式的時候,表明這個函式只能在本檔案中起作用,不能被外界的檔案訪問。比如你寫了乙個函式求和,那麼這個函式在所有的c檔案中都可以呼叫,但是用static修飾後,只能在這個包含求和函式的問價生效,這樣就防止函式同名。—限制作用域。
3:static修飾全域性變數的時候,表示全域性變數的作用域僅限於此文加中,不能被別的c檔案中使用。
const:
const關鍵字的作用在於兩個字-----唯讀。什麼是唯讀?也就是不能被使用者修改這個變數的值,只能讀取使用。
當const修飾函式的時候,說明函式的返回值是唯讀的,防止被惡意修改。增強程式的健壯性。這裡你可能會問,為什麼會被惡意修改,試想一下,如果有乙個很重要的資料需要測量然後返回給你的系統,保證資料千萬不能出錯,這個時候,你的工程非常的大,所以,為了以防萬一,這時候就需要用到const了(鬼知道編譯器會對程式做什麼)
const修飾函式形參的時候,比如 char test(const char a) 這就表明不允許函式內部修改傳入的陣列的值。以防萬一。
const和指標
const int *p:
const *int p:
const *int *p:
邏輯回歸的常見面試點總結
1.簡介 邏輯回歸是面試當中非常喜歡問到的乙個機器學習演算法,因為表面上看邏輯回歸形式上很簡單,很好掌握,但是一問起來就容易懵逼。所以在面試的時候給大家的第乙個建議不要說自己精通邏輯回歸,非常容易被問倒,從而減分。下面總結了一些平常我在作為面試官面試別人和被別人面試的時候,經常遇到的一些問題。2.正...
邏輯回歸的常見面試點總結
邏輯回歸是面試當中非常喜歡問到的乙個機器學習演算法,因為表面上看邏輯回歸形式上很簡單,很好掌握,但是一問起來就容易懵逼。所以在面試的時候給大家的第乙個建議不要說自己精通邏輯回歸,非常容易被問倒,從而減分。下面總結了一些平常我在作為面試官面試別人和被別人面試的時候,經常遇到的一些問題。如何凸顯你是乙個...
C 語言常見面試題
1 define 與 typedef的區別 1 define是預處理指令,在預處理時進行替換,其後邊沒有分號 2 typedef是在編譯時處理的,使用時注意 1例 define pint int typedef int pint pint a,b 相當於int a,b 只定義了乙個指標 pint a...