C說話中變量與其內存地址對應的入門常識簡略講授。本站提示廣大學習愛好者:(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。如許我們就有兩個分歧類型的變量了。
賦值給變量
再看上面賦值:
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的甚麼器械啊?
法式運轉成果:
5 2686748 Process returned 0 (0x0) execution time : 0.079 s Press any key to continue.