指標也是一種資料型別,占用記憶體空間,記憶體中儲存的只能是變數的位址。
*p是操作記憶體的意思,在宣告成為指標變數的時候使用*,在使用指標的時候,*表示操作記憶體。
*p放在等號的左邊,相當於是從記憶體中取值,*p放在記憶體的右邊,相當於是想記憶體中寫值
*就像一把鑰匙,通過乙個位址,找到一塊記憶體空間,來間接的修改記憶體中的值。
指標變數和它指向的記憶體變數是不同的概念。
不斷的給指標賦值,相當於不停的改變指標的指向。
修改指標所指向的記憶體空間的資料,要保證這個記憶體空間是可以被修改的。舉個例子就是修改常量區的記憶體
指標也是一種資料型別,指標的資料型別指的是它指向記憶體空間的資料型別。
指標的資料型別決定了指標的步長。
在執行程式的時候,c編譯器會提前將所有的變數都分配出來,然後在執行相應的函式呼叫。
兩個指標共享乙個記憶體塊,是語言的精華。
c語言中字面常量,也即是0,沒有放在堆區中或者是棧中,也就是所謂的巨集定義。字面常量是不能取位址的。
間接賦值是指標存在的最大意義,這樣就允許了被呼叫函式操作主調函式中的記憶體,或者是主調函式可以接受被呼叫函式分配的記憶體位址。
間接賦值是指標存在的最大意義。
指標做函式引數 ,可以進行模組的劃分。
函式呼叫時,形參傳給實參,用實參取位址,傳給形參,在被呼叫函式裡面用*p,來改變實參,把運算結果傳出來。這個是指標做函式的精華。
理解指標必須和記憶體四區概念相結合,分清楚主調函式和被調函式。
指標的輸入和輸出特性:
輸入特性,值得是在主調函式中分配記憶體,將記憶體傳遞給被呼叫函式,這種用法叫指標的輸入。
輸出特性,在被呼叫函式中分配記憶體,然後供主呼叫函式使用,或者修改主調函式中的記憶體。
應用指標必須和函式結合起來使用。
一級指標主要有兩種表現,一種是一維陣列,另外一種是字串。
c風格的字串是以0結尾的字串,在c語言中,沒有字串這種型別,字元陣列模擬字串。
字串的記憶體分配,可以在堆上,可以在棧上,也可以在全域性區。
字元陣列的初始化:
指定長度的:char buf[100] = ;如果個數大於記憶體的個數,會編譯錯誤。否則,編譯器其他後面的會自動補成0,可以通過列印後面的值來檢視是否為0
不指定長度的:char buf = ;初始化的個數會由編譯器自動生成。由於這個字串不是以0結尾的,因此,不是乙個c風格的字串。
用字串來初始化字元陣列,字串後面缺省會有乙個『\0』
char buf = "abc";buf中有4個記憶體,作為字元陣列,應該有4個位元組,作為字串應該有3個位元組,可以分別通過sizeof和strlen來求得。
char buf[100] = "abc";後面的也會全部都變成0,這些都是編譯器的行為。
陣列是一種資料型別。只不過是一種複雜的資料型別而已,可以通過sizeof來張量出資料型別所佔的記憶體空間的大小。
中括號和指標之間的關係。陣列名表示的是陣列元素的首位址,是乙個常量指標。目的是為了在析構記憶體的時候,編譯器可以使用這個指標來釋放對應的記憶體資源。
為了能保證區域性變數的記憶體的首位址的安全性,編譯器在設計的時候就講陣列首位址設計成為了乙個常量。
一級指標的記憶體模型,最為經常的就是字串和陣列型別。
字串做函式引數,就是在主調函式中分配記憶體,在被呼叫函式中進行字串的具體處理,比如說查詢或者是統計。
++的優先順序要高於*的優先順序,也就是說++和*都是一種操作,字尾++是先進行其他運算,然後在將其進行++操作
在字串進行拷貝的時候,一定不要忘記了字串最後的'\0'。
在進行指標賦值的時候,一定要保證提前分配記憶體,沒有記憶體,就沒有位址,沒有位址,就沒有指標變數。
多多判斷,就是在使用別人傳遞過來的引數的時候,一定要判斷是否滿足要求,如果不滿足要求就不能往下繼續執行,這樣才能防止錯誤資料帶來的後續影響。
不要輕易改變形參的值,要引進乙個輔助變數,將形參的值給接過來,以後都是通過輔助變數來進行對應的操作。
C 語言中的指標
指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...
C語言中的指標
隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...
C語言中的指標
指標是c語言中非常重要的東西,書本上寫了好多來解釋裡面的原理,當年老師也跟我們講了好多這方面的東西,一直就是感覺沒有聽明白。直到我看到了指向指標的指標,我建立了自己的理解,不知道是否正確,但是基本能解決遇到的問題。int p p i p。type p,宣告指標變數,type 例如int 告訴計算機p...