C語言指針學習經驗總結 學習
指針是C語言的難點和重點,但指針也是C語言的靈魂 。這篇C語言指針學習經驗總結主要是我入職以來學習C指針過程當中的點滴記錄。文檔裏面就不重複書上說得很清楚的概念性東西,只把一些說得不清楚或理解起來比較費解的東西作一下講解,但願能達到如下三個目的 spa
指針是一個特殊的變量,它裏面存儲的數值被解釋成爲內存裏的一個地址。 要搞清一個指針須要搞清指針的四方面的內容: 指針
先聲明幾個指針放着作例子: 內存
例一: 文檔
(1)int *ptr; 編譯器
(2)char *ptr; 編譯
(3)int **ptr; 變量
(4)int (*ptr)[3]; 語法
(5)int *(*ptr)[4]; 方法
從語法的角度看,你只要把指針聲明語句裏的指針名字去掉,剩下的部分就是這個指針的類型。這是指針自己所具備的類型。因此分析下例一中各個指針的類型:
(1)int *ptr; //指針的類型是int *
(2)char *ptr; //指針的類型是char *
(3)int **ptr; //指針的類型是 int **
(4)int (*ptr)[3]; //指針的類型是 int(*)[3]
(5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]
因此找出指針的類型的方法是否是很簡單?
當你經過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區裏的內容當作什麼來看待。從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符 *去掉,剩下的就是指針所指向的類型。例如:
(1)int *ptr; //指針所指向的類型是int
(2)char *ptr; //指針所指向的的類型是char
(3)int **ptr; //指針所指向的的類型是 int *
(4)int (*ptr)[3]; //指針所指向的的類型是 int()[3]
(5)int *(*ptr)[4]; //指針所指向的的類型是 int *()[4]
在指針的算術運算中,指針所指向的類型有很大的做用。
指針的類型(即指針自己的類型)和指針所指向的類型是兩個概念。當對C愈來愈熟悉時,你會發現,把與指針攪和在一塊兒的「類型」這個概念分紅「指針的 類型」和「指針所指向的類型」兩個概念,是精通指針的關鍵點之一。有些教材書上寫得不好,就把指針的這兩個概念攪在一塊兒了,因此看起書來先後矛盾,越看越糊塗。
點擊原文連接查看所有>>