指針是pointer的翻譯,你可以理解為指示器。
你是哪裡人?你要去哪裡?去北樓三層05架04格第3層把《三體》這本書給我拿來。
由此可知,地址可以給你一個目标位置的指向。
内存的内存單元是一種線性存儲結存,其序列号就是其地址的标識。數據存儲在連續的内存單元中,一段連續内存單元的首地址可以命名為變量。 一段連續内存單元中可以存儲基本數據類型的字面值,也可以存儲指向某一段内存單元的地址值,前者是變量,後者因其特殊性,稱為指針變量(指針變量在32位系統中,不管其指針一段多長的連續内存單元,其本身一般用4個字節來存儲其地址值):
這時,也可以理解指針對數據的訪問是:你要找《三體》這本書,你先去北樓四層06架05格第4層,那裡有一個指示牌會告訴你《三體》這本書在哪裡,指示牌上标識了一個地址:北樓三層05架04格第3層。
變量是一段連續内存單元首地址的命名,指針變量也是如此。
一段連續的内存單元,需要讀取多少内存單元?基本數據類型規定了内存單元字節的數量,指針變量的聲明必須聲明是指向什麼類型的變量,由類型即可以确定其指向的内存單元的首地址及長度。
對于數組,由數組長度來确定需要讀寫内存單元的數量。
對于字符串,C語言的做法是就是讀取連續内存單元,直到“\0”為止。
對于字符指針,如:
char* str = "abcdef";
其中就隐含了一個以“\0”結尾的字符。
對于文件,相對于内存來說,也是輸入、輸出的對象,可以理解為一個字符串,段落由非顯示字符"\n\r"來标識,長度怎樣确定呢,類似于字符串,也是定義一個結尾标志,EOF。
指針除了指向基本數據類型,也可以指向結構體變量、類類型對象,不管是結構體變量,還是類類型,其成員數據都是連續存儲在一起,指針指向其首地址。
對于動态内存申請,其參數包括需要内存單元的數量,也是返回一個首地址,可以賦值給一個指針變量來使用。
什麼是指針的指針呢?指針指向的内存單元中包含的值還是一個地址值,由這個地址值指向的内容才是實際數據值。(也就是由兩個地址值來确定一個數據實際值)
對于鍊表,每一個節點都包含一個自身結構體類型的指針變量,用于指向下一個指針。頭節點的首地址就是鍊表的名稱,可以由指針變量指向它。對于單鍊表,第n個節點的地址往往由第n-1個節點(其前一個)的地址域來确定。如果pn是一個指針,next是節點的地址域,通常使用pn->next;來表示地址的偏移(移動到下一個結點)
-End-
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!