C語言指標學習經驗總結淺談

來源:互聯網
上載者:User

這篇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越來越熟悉時,你會發現,把與指標攪和在一起的“類型”這個概念分成“指標的 類型”和“指標所指向的類型”兩個概念,是精通指標的關鍵點之一。有些教材書上寫得很差,就把指標的這兩個概念攪在一起了,所以看起書來前後矛盾,越看越糊塗。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.