c語言學習經驗總結體會
- 學習總結
- 關注:2.88W次
小編來給大家分享C語言學習心得啦!
這篇C語言指針學習經驗總結主要是我入職以來學習C指針過程中的點滴記錄。文檔裏面就不重複書上説得很清楚的概念性東西,只把一些説得不清楚或理解起來比較費解的東西做一下講解,希望能達到以下三個目的
(1)通過寫這些東西,把我腦袋中關於C的模糊的知識清晰化。
(2)給初轉C的同事們一點提示和幫助。
(3)也希望各位前輩檢查一下文檔中是否有理解偏差的地方。
1 指針的概念分解
指針是一個特殊的變量,它裏面存儲的數值被解釋成為內存裏的一個地址。 要搞清一個指針需要搞清指針的四方面的內容:
1.指針的類型
2.指針所指向的類型
3.指針的值或者叫指針所指向的內存區
4.還有指針本身所佔據的內存區
先聲明幾個指針放着做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
1.1 指針的類型
從語法的角度看,你只要把指針聲明語句裏的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。所以分析下例一中各個指針的類型:
(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.2 指針所指向的類型
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區裏的內容當做什麼來看待。從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符 *去掉,剩下的就是指針所指向的類型。例如:
(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越來越熟悉時,你會發現,把與指針攪和在一起的“類型”這個概念分成“指針的 類型”和“指針所指向的類型”兩個概念,是精通指針的關鍵點之一。有些教材書上寫得很差,就把指針的這兩個概念攪在一起了,所以看起書來前後矛盾,越看越糊塗。
- 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/zongjie/xuexi/xowkne.html