學習筆記:指標之C

來源:互聯網
上載者:User

標籤:指標   c語言   儲存   記憶體   

因為某些原因來好好的將C重新梳理一遍,過去一年也是個渣,好在還能重新來過。將C和指標中指標一節學習了三四次,再將後面的習題做了一做。現在再好好回顧一下。至於對錯就不過多評價。

指標的確是C的特點之一,從最初接這玩意就沒把它弄的很明白。據說把它真正吃透的人也不多。這也只是我的學習筆記。指標,記得當初C語言老師說的一點,就是地址,其他就沒啥印象了。自從自己做題就是記住了這點,指標就是地址,訪問相應記憶體空間的值是間接訪問,要用‘ * ’,也叫解引用指標。

通過C和指標這本參考書,我才知道我們是用變數來代替地址,也就是我們口中的變數。硬體依舊通過地址訪問記憶體位置。相應記憶體空間儲存的值得類型也並非值本身所固有的一種特性,而是取決於他的使用方式,這是隱式的決定方式。

在使用指標前,必須將其初始化,這是通過& 操作符完成的。不然就應該將其初始化為空白指標即NULL。這樣做的好處是防止指標未初始化會造成的未知錯誤。

另外需要注意一點,變數的值就是分配給該變數的記憶體位置所儲存的數值,即使指標變數也不例外。例如

int a;//假設a 的地址為100int *b;a =120;b =&a;printf( "%d %d";a,b);
這樣得到的值是120和100。這時我們也應該牢記指標變數的值就是一個數字,除非有間接訪問操作符,否則我們是不能訪問相應記憶體空間的值。

在解引用指標前,我們必須要確定相應的指標不是NULL指標,因為它是不能進行間接訪問的。否則將會引發錯誤終止程式或者訪問記憶體位置零,引發未知錯誤。

(檢查參數的合法性)

指標常量其實蠻少用,除了極其特殊的情況(你能確定資料的記憶體位置)。此處應注意,假如知道指標變數確切位置即一整型數值,通過其間接訪問操作話,應強制類型轉化。如

*(int*)100 =5;
就是把值5儲存於記憶體位置100。

指標的指標話,就應該先把一重指標搞明白後,多看看書,做做練習,對概念才更加深刻。

在學習時,遇到一些很常用的指標運算式。例如

char cp = 'a';char *cp =&ch;
&ch;cp;//右值 左值&cp;*cp;//<span style="font-family: Arial, Helvetica, sans-serif;">右值 左值</span>*cp + 1;*( cp +1 );//右值 左值++cp;cp++;*++cp;//右值 左值*cp++;//右值 左值++*cp;(*cp)++;//++*++cp;//++*cp++;
以上未標註的就只有為右值時合法。

不過正如書的作者所說 這並非讓大家死記硬背,關鍵是讓大家去理解這些運算式的意義。

坦白說我自己還是比較迷糊 不太理解這些運算式 不過忘了多翻翻參考手冊 積累久了就好了。

另外對於指標的運算,指標和一個整數量執行算術運算時,指標的值根據合適的大小進行調整。即指標變化量等於整數量乘以資料類型所佔位元組大小(char 1 , short 2,  int 4,  double 8)。

只有指向同一個數組的指標才能進行減法運算。而其減法運算的結果與資料類型是沒有什麼關係的。減法運算的值是兩個指標在記憶體的距離(以數組元素的長度為單位,而不是以位元組為單位),因為減法運算的結果將除以數組元素類型的長度。例如p1指向array[i]而p2指向array[j],那麼p1-p2的值就是 j - i 的值。

學習筆記:指標之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.