c語言學習經驗總結體會
c語言學習經驗總結體會
小編來給大家分享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越來越熟悉時,你會發現,把與指標攪和在一起的“型別”這個概念分成“指標的 型別”和“指標所指向的型別”兩個概念,是精通指標的關鍵點之一。有些教材書上寫得很差,就把指標的這兩個概念攪在一起了,所以看起書來前後矛盾,越看越糊塗。