C語言二級指針怎么用?
通常是因為,我希望別人給我的一個指針賦值。
例如,指向COM接口的指針是void*類型,而獲取COM接口的函數(shù)的參數(shù)是void**。
當然這個東西需要你多加練習。等你理解的更深入之后,你自然會逐漸理解。
現(xiàn)在我再舉一個簡單的例子來說明。繪制一個地址大小為1字節(jié)的內存空間:
|地址|值|
|-|-|
|20|0A|ch1←-┐
|-|-|│
|21|抄送|│
|-|-|│
|22|20|p1-┘←-┐
|-|-|│
|23|22|pp1-┘
|-|-|
現(xiàn)在讓我們假設有一個變量。
Charch10x0A//假設ch1的地址位于20H:的M[20h]0ah。
char*p1ampch1
char**pp1ampp1
假設內存空間,我們把它想象成一個數(shù)組:char[]給這個數(shù)組起了個名字叫m,比如:
charm[256]
現(xiàn)在有了那個0x0A,就可以過了。
charch2**pp1
因此,我們可以把它理解為:
Charch2m[m[pp1]]//求解二級指針引用。
這是二級指針;
-
同樣的,
charch3*p1
可以理解為:
Charch3m[p1]//去指針引用
好的,在匯編層,那sit(匯編語言中,沒有m,只會出現(xiàn)[])。例如:
MOV·
為什么說指針是C語言的精髓?
指針也是一種叫做指針變量的變量,但它存儲的是地址。就像酒店的禮賓號一樣,每個禮賓號都有一個指針(地址),不同類型的指針指向不同類型的地址,就像酒店的不間一樣,比如標準間、三人間、情侶間、總統(tǒng)套房等。
所以我們可以很容易地通過指針找到數(shù)據的存儲位置,并對其進行操作。C語言指針的使用非常靈活。在實際操作中使用指針可以提高程序的運行效率,使程序的結構更加緊湊合理,數(shù)組占用的內存小。雖然使用指針有很多優(yōu)點,但是使用時必須小心,以防止指針變直。用后及時釋放。避免程序崩潰。
C的指針非常靈活,我們在編程的時候可以隨意修改,但正因為如此,編程過程中稍有不慎就會造成內存泄漏,訪問到不該訪問的內存。與其他語言相比,只有指針是唯一的,這使得它更加簡潔高效,這也是C不死的原因。當你能使用指針并很好地使用它時,你就能發(fā)揮C的強大威力,但如果你不如果不好好利用它,它會成為一枚炸彈。
你可以通過指針操縱內存,高級程序員可以自己小心翼翼的控制內存。你可以使用設計良好的算法、數(shù)據結構和內存控制來實現(xiàn)高性能的程序,但初級程序員往往可以不能正確使用它們,這會導致錯誤。
指針主要用來定位、使用和管理程序的內存,提高程序執(zhí)行的效率。雖然今天的硬件性能s的計算機已經很不錯了,已經完全滿足了一般的程序開發(fā)和執(zhí)行,但是如果想更深入的了解軟硬件編程,希望更靈活獨立的實現(xiàn)程序開發(fā)。指針是其他編程語言不具備的一個非常重要的功能。