計算機系統的嵌入式系統,內存資源非常有限,特別是對于移動開發者來說,硬件資源的局限性使得如何有效地管理內存資源成為編程中最重要的考慮因素,下面是武林技術頻道小編為大家講解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。這樣我們就有兩個不同類型的變量了。
賦值給變量
再看下面賦值:
i = 30;a = 't';
你當然知道個兩個語句是將30存入i變量的內存空間中,將“t”字符存入a變量的內存空間中。我們可以利用這樣的形象來理解:
變量在哪里?
即我想知道變量的地址。
好了,接下來我們來看看&i是什么意思?
是取i變量所在的地址編號嘛。我們可以這樣讀它:返回i變量的地址編號。你記住了嗎?
我要在屏幕上顯示變量的地址值的話,可以寫如下代碼:
printf("%x", &i);
以上圖的內存映象為例,屏幕上顯示的不是i值30,而是顯示i的內存地址編號6了。當然,在你的實際操作中,i變量的地址值不會是這個數了。
這就是我所認為的作為初學者應該能夠想象到的變量存儲的實質了。請這樣理解吧。
最后總結代碼如下:
#include "stdio.h"main(){ int i = 5; printf("%d/n", i); /*①*/ printf("%d/n", &i); /*②*/ return(0);}
現在你可知道①、②兩個printf分別在屏幕上輸出的是i的什么東西啊?
程序運行結果:
52686748Process returned 0 (0x0) execution time : 0.079 sPress any key to continue.
以上就是武林技術頻道為大家提供的講解C語言中變量和內存地址對應的簡單知識,相信大家在看完后會對你有很大的幫助,如果你覺得我們的網站不錯,可以收藏本站。
新聞熱點
疑難解答
圖片精選