Linux整理筆記(3)

2021-08-15 03:22:02 字數 2205 閱讀 9118

一、指標變數的定義

指標變數前面的「*

」便是該拜納涼為指標型變數。指標變數名是

pointer_1

和pointer_2

,而不是

*pointer_1

和*pointer_2.

這是與定義整數或實行變數的形式不同的。在定義指標變數是必須指定基型別。不同型別的資料在記憶體中所佔的自己輸和存放方式是不同的。指向乙個整型變數和指向乙個實型變數在物理意義上是不同的。

二、什麼是野指標

野指標即指向乙個錯誤位置的指標。它可能會導致存放在堆中的資料可能會被破壞,用來處理堆的資料結構也可能會被破壞,甚至作業系統的資料也可能會被修改,甚至上述三種破壞情況同時發生。

三、指標的值

指標的值也叫作指標所指向的記憶體區或位址。指標的值是指標本身儲存的數值,這個值被編譯器當作乙個位址,而不是乙個一般的數值。在32位程式裡,所有型別的指標的值都是乙個

32位整數,因為

32位程式裡的記憶體位址全都是

32位長。指標所指向的記憶體區就是從指標的值所帶表的那個記憶體位址開始,長度為

sizeof

的一片記憶體區。

四、什麼是「指向」

位址就意味是指向,因為通過位址能找到具有該位址的物件。對於指標來說,把誰的位址存放在指標變數中,就是此指標變數指向誰。但並不是任何型別資料的位址都可以存放同乙個指標變數中的,只有與指標變數的基型別相同的資料的位址才能存放在相應的指標變數中。

五、指標常量和常量指標

常量指標指向的內容不可變,但位址可以改變,即指標可以指向別的位址;而指標常量是指指標本身不可變,而內容可以修改。如果指標常量指向的是字元指標,變數那麼當前修改*p時,原則上能夠修改,在編譯是能通過,但在執行時不能通過,因為它試圖改常量區的內同,顯示是非法的。當指標常量指向乙個另外指標時,當這個指標指向別的內容時,那麼指標常量還是指向原先的內容。

六、形參和實參的資料傳遞(指標)

c語言中實參變數和形參變數之間的資料傳遞是單向的「值傳遞」,方式。用指標變數做函式引數時同樣要遵循這一規則。不可能通過執行呼叫函式來改變實參指標變數的值,但是可以改變實參指標變數所指的值。(函式的呼叫可以得到乙個返回值,而使用指標變數做引數,可以得到多個變化了的值。如果不用指標變數是難以做到這點的)。

七、字元指標作函式引數

如果把乙個字串從乙個函式,可以用位址傳遞的辦法,急用字元陣列名作引數,也可以用字元指標變數做引數。在被呼叫的函式中可以改變字串的內容,在主調函式中可以引用改變後的字串。

八、字元指標變數和字元陣列

(1)字元陣列由若干個勻速組成,每個元素中放乙個字元,而字元指標變數中存放的是位址,絕不是將字串放到字元指標變數中。

(2)可以對字元指標變數賦值,但不能對陣列名賦值。

(3)編譯時為字元陣列分配若干儲存單元,一存放各元素的值,而對字元指標變數,只分配乙個儲存單元。

(4)指標變數的值可以改變的,而字元陣列名代表乙個固定的值,不能改變。

九、什麼是函式的指標

如果在程式中定義了乙個函式,在編譯時會把函式的源**轉換為可執行**並分配儲存空間。這段記憶體空間有乙個起始位址,也稱為函式的入口位址。每次呼叫函式時都從該位址入口開始執行此段函式**。含宿命代表函式的起始位址。呼叫函式時,從函式名得到函式的起始位址,並執行函式**。函式名就是函式的指標,它代表函式的起始位址。

十、如何定義和使用指向函式的指標變數

判定指標變數是指向函式的指標變數,首先看變數名的前面有無「*

」號。如果有,肯定是指標變數而不是普通變數。其次,看變數名的後面有無圓括號,內有形參的型別。如果有,就是指向函式的指標變數,這圓括號是函式的特徵。要注意的是:由於優先順序的關係,「

*指標變數名」要用圓括號括起來。

定義指向函式的指標變數,並不意味著這個指標變數可以指向任何函式,它只能指向在定義時指定的型別的函式。如果要用指標呼叫函式,必須先使指標變數指向該函式。在給函式指標變數賦值時,只需給出函式名而不必給出引數。用函式指標變數呼叫時,只需將(*p)代替函式名即可,在(

*p)之後的括號中根據需要寫上實參。用函式名呼叫函式,只能呼叫所指定的乙個函式,而通過指標變數呼叫函式比較靈活,可以根據不同情況先後呼叫不同的函式。

LINUX筆記整理

uname a 檢視核心版本 ls al 顯示所有檔案的屬性 pwd 顯示當前路徑 cd 返回上一次目錄 cd 返回主目錄 cal 顯示日曆 cal 2006 bc 計算器具 man info 幫助手冊 locale 顯示當前字型 locale a 所有可用字型 etc sysconfig i18n...

Linux整理筆記(1)

一 變數是什麼 其值在其作用域內可以改變的量稱為變數。每乙個變數有乙個名字,在記憶體中佔據一定的儲存空間。變數在使用前需要定義,每個變數都有自己的位址。二 區域性變數的作用域 1 主函式中定義的變數也只能在主函式中使用,不能在其他函式中使用。同時,主函式中也不能使用其他函式中定義的變數。因為主函式也...

Linux整理筆記(7)

一 棧 是限定僅在表尾進行插入和刪除操作的線性表 又稱後進先出的線性表。lifo結構。棧頂top 允許插入和刪除的一端 棧底bottom 另外一端 二 棧的操作 進棧,壓棧,入棧 棧的插入操作 出棧,彈棧 棧的刪除操作 棧中有乙個元素時,top 0 空棧時,top 1 三 鏈式棧 棧的鏈式儲存結構是...