漫談C指針:C語言變量的實質

可以把內存看成電影院座位
服務器君一共花費了274.264 ms進行了8次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

要理解C指針,我認為一定要理解C中“變量”的存儲實質,所以我就從“變量”這個東西開始講起吧。

先來理解理解內存空間吧。請看下圖:

如上圖所示,內存只不過是一個存放數據的空間,就好像我的看電影時的電影院中的座位一樣。電影院中的每個座位都要編號,而我們的內存要存放各種各樣的數據,當然我們要知道我們的這些數據存放在什么位置吧。所以內存也要象座位一樣進行編號了,這就是我們所說的內存編址。座位可以是遵循“一個座位對應一個號碼”的原則,從“第1號”開始編號。而內存則是按一個字節接著一個字節的次序進行編址,如上圖所示。每個字節都有個編號,我們稱之為內存地址。好了,我說了這么多,現在你能理解內存空間這個概念嗎?

我們繼續看看以下的C/C++語言變量聲明:

int i;
char a;

每次我們要使用某變量時都要事先這樣聲明它,它其實是內存中申請了一個名為i的整型變量寬度的空間(DOS下的16位編程中其寬度為2個字節),和一個名為a的字符型變量寬度的空間(占1個字節)。

我們又如何來理解變量是如何存在的呢。當我們如下聲明變量時:

int i;
char a;

內存中的映象可能如下圖:

圖中可看出,i在內存起始地址為6上申請了兩個字節的空間(我這里假設了int的寬度為16位,不同系統中int的寬度可能是不一樣的),并命名為i。a在內存地址為8上申請了一字節的空間,并命名為a。這樣我們就有兩個不同類型的變量了。

延伸閱讀

此文章所在專題列表如下:

  1. 漫談C指針:C語言變量的實質
  2. 漫談C指針:變量賦值與取地址
  3. 漫談C指針:指針是什么東西
  4. 漫談C指針:指針與數組
  5. 漫談C指針:聲明指針常量
  6. 漫談C指針:從const int i說起
  7. 漫談C指針:const int *pi的語義
  8. 漫談C指針:參數傳遞的三道題目
  9. 漫談C指針:參數的值傳遞
  10. 漫談C指針:參數的地址傳遞
  11. 漫談C指針:參數的引用傳遞
  12. 漫談C指針:回顧指針概念
  13. 漫談C指針:指向另一指針地址的指針
  14. 漫談C指針:一個指針應用實例
  15. 漫談C指針:函數名其實也是指針
  16. 漫談C指針:函數調用的指針寫法
  17. 漫談C指針:定義函數的指針類型
  18. 漫談C指針:函數指針作為函數參數使用

本文地址:http://www.zqhthc.tw/librarys/veda/detail/2119,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.zqhthc.tw/librarys/veda/detail/2119

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《代碼之美》 聶雪軍 (譯者)

《代碼之美》介紹了人類在一個奮斗領域中的創造性和靈活性:計算機系統的開發領域。在每章中的漂亮代碼都是來自獨特解決方案的發現,而這種發現是來源于作者超越既定邊界的遠見卓識,并且識別出被多數人忽視的需求以及找出令人嘆為觀止的問題解決方案。《代碼之美》33章,有38位作者,每位作者貢獻一章。每位作者都將自己心目中對于“美麗的代碼”的認識濃縮在一章當中,張力十足。38位大牛,每個人對代碼之美都有自己獨特的認識,現在一覽無余的放在一起,對于熱愛程序的每個人都不啻一場盛宴。 雖然《代碼之美》的涉獵范圍很廣,但也只能代表一小部分在這個軟件開發這個最令人興奮領域所發生的事情。

更多計算機寶庫...

英超直播吻球网