pragma mark - 變量?jī)?nèi)存分析
/**
1. 字節(jié)和地址
內(nèi)存就是字節(jié),內(nèi)存以“字節(jié)為單位”
2. 變量的存儲(chǔ) 占據(jù)的存儲(chǔ)空間
一個(gè)變量所占用的存儲(chǔ)空間,不僅跟變量類型有關(guān),而且還跟編譯器環(huán)境有關(guān)。同一種類型的變量,在不同編譯器環(huán)境下所占用的存儲(chǔ)空間又是不一樣的
* 所占用字節(jié)數(shù)跟類型有關(guān),也跟編譯器環(huán)境有關(guān)
* 內(nèi)存由大到下尋址
* 變量存儲(chǔ)單元的第一個(gè)字節(jié)的地址就是該變量的地址
* 任何變量在內(nèi)存中都是以二進(jìn)制的形式存儲(chǔ)。一個(gè)負(fù)數(shù)的二進(jìn)制形式,其實(shí)就是對(duì)它的正數(shù)的二進(jìn)制形式進(jìn)行取反后再+1(取反的意思就是0變1,1變0)
編譯器
類型 16位 32位 64位(只關(guān)注64 因?yàn)槭荕ac都是64位的)
char 1 1 1
int 2 4 4
float 4 4 4
double 8 8 8
short 2 2 2
long 2 2 2
long long 2 2 2
void* 2 4 8
*/
pragma - mark -代碼
#import <Foundation/Foundation.h>
int main()
{
// 內(nèi)存尋址從大到小 , 如果按照這種規(guī)則,那么先定義的變量?jī)?nèi)存地址一定大于后定義的變量
/**
* 比如當(dāng)前地址有 0ffc1~0ffc16
*/
int number = 0; // 0ffc13~0ff16
int value = 0; // 0ffc9~0ff12
// 如何獲得變量的詳細(xì)地址(變量地址),&變量名稱
// 利用%p展位符來(lái)打印變量的詳細(xì)地址
// 輸出的是一個(gè)十六進(jìn)制的數(shù)
// a/b/c/d/f/j
// 10/11/12/13/14/15
// 10/11/12/13/14/15
printf("%p\n",&number);// 先定義的 內(nèi)存地址越大
printf("%p\n",&value);
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。