day_01_數(shù)據(jù)類(lèi)型岂傲、數(shù)組难裆、內(nèi)存布局

c與c++

C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)镊掖。
c語(yǔ)句是面向過(guò)程的語(yǔ)言乃戈,c++是面向?qū)ο蟮恼Z(yǔ)言,C++對(duì)c進(jìn)行擴(kuò)展亩进。
c是c++的子集,c++是c的超集偏化,所以大部c語(yǔ)言程序都可以不加修改的拿到c++下使用。

1镐侯、基本數(shù)據(jù)類(lèi)型

     1.**signed**----有符號(hào)侦讨,可修飾char、int苟翻。Int是默認(rèn)有符號(hào)的韵卤。
 2.**unsigned**-----無(wú)符號(hào),修飾int 崇猫、char
整型 字節(jié) 取值范圍 占位
int 4 -2,147,483,648 到 2,147,483,647 %d
unsigned int 4 0 到 4,294,967,295 %u
short 2 -32,768 到 32,767 %hd
unsigned short 2 0 到 65,535 %hu
long 4 -2,147,483,648 到 2,147,483,647 %ld
unsigned long 4 0 到 4,294,967,295 %lu
char 1 -128 到 127 %c
unsigned char 1 0 到 255 %c

為了得到某個(gè)類(lèi)型或某個(gè)變量在特定平臺(tái)上的準(zhǔn)確大小沈条,使用 sizeof 運(yùn)算符。

表達(dá)式 sizeof(type) 得到對(duì)象或類(lèi)型的存儲(chǔ)字節(jié)大小诅炉。

long int 其實(shí)就是長(zhǎng)整型 = long 可以省去int
在標(biāo)準(zhǔn)中,規(guī)定 int至少和short一樣長(zhǎng)蜡歹,long至少和int一樣長(zhǎng)。

格式化還有:

8進(jìn)制 %o
16進(jìn)制 小寫(xiě): %x 大寫(xiě):%X
(0x)+16進(jìn)制前面 %#x

浮點(diǎn)型 字節(jié) 精度 占位
float 4 6位小數(shù) %f
double 8 15位小數(shù) %lf
long double 8 19位小數(shù) %Lf

C99標(biāo)準(zhǔn)以前涕烧,C語(yǔ)言里面是沒(méi)有bool月而,C++里面才有,
C99標(biāo)準(zhǔn)里面定義了bool類(lèi)型议纯,需要引入頭文件stdbool.h
bool類(lèi)型有只有兩個(gè)值:true =1 父款、false=0。
因此實(shí)際上bool就是一個(gè)int
所以在c/c++中 if 遵循一個(gè)規(guī)則瞻凤, 非0為true憨攒,非空為true;
NULL 其實(shí)也就是被define為了 0

2阀参、格式化

include <stdio.h>

printf肝集、sprintf等
sprintf:將格式化的數(shù)據(jù)寫(xiě)入第一個(gè)參數(shù)

char str[100];
sprintf(str, "img/png_%d.png", 1);
printf("%s", str);

//使用 0 補(bǔ)到3個(gè)字符
sprintf(str, "img/png_%03d.png", 1);
printf("%s", str);

3、數(shù)組與內(nèi)存布局

數(shù)組 : 連續(xù)的內(nèi)存

//java
int[] a

//c
//必須聲明時(shí)候確定大小
int a[10]  
//或者 直接初始化 
int a[] = {1,2,3}

//大小
printf("%d",sizeof(a)/sizeof(int));

棧內(nèi)存限制 linux:ulimit -a 查看
但是直接分配這么大不行蛛壳,因?yàn)槎褩杏瞻?赡鼙4鎱?shù)所刀,返回地址等等信息

動(dòng)態(tài)內(nèi)存申請(qǐng)

malloc
沒(méi)有初始化內(nèi)存的內(nèi)容,一般調(diào)用函數(shù)memset來(lái)初始化這部分的內(nèi)存空間.
calloc
申請(qǐng)內(nèi)存并將初始化內(nèi)存數(shù)據(jù)為NULL.

 ` int *pn = (int*)calloc(10, sizeof(int));`

realloc

 對(duì)malloc申請(qǐng)的內(nèi)存進(jìn)行大小的調(diào)整.
char *a = (char*)malloc(10);
realloc(a,20);

特別的:
alloca
在棧申請(qǐng)內(nèi)存,因此無(wú)需釋放.
int *p = (int *)alloca(sizeof(int) * 10);

物理內(nèi)存
物理內(nèi)存指通過(guò)物理內(nèi)存條而獲得的內(nèi)存空間

虛擬內(nèi)存
一種內(nèi)存管理技術(shù)
電腦中所運(yùn)行的程序均需經(jīng)由內(nèi)存執(zhí)行,若執(zhí)行的程序占用內(nèi)存很大伐憾,則會(huì)導(dǎo)致內(nèi)存消耗殆盡。
虛擬內(nèi)存技術(shù)還會(huì)勻出一部分硬盤(pán)空間來(lái)充當(dāng)內(nèi)存使用赫模。

代碼段:
存放程序執(zhí)行代碼(cpu要執(zhí)行的指令)

棧是向低地址擴(kuò)展數(shù)據(jù)結(jié)構(gòu)
堆是向高地址擴(kuò)展數(shù)據(jù)結(jié)構(gòu)

進(jìn)程分配內(nèi)存主要由兩個(gè)系統(tǒng)調(diào)用完成:brk和mmap 树肃。

  1. brk是將_edata(指帶堆位置的指針)往高地址推;
  2. mmap 找一塊空閑的虛擬內(nèi)存瀑罗。

通過(guò)glibc (C標(biāo)準(zhǔn)庫(kù))中提供的malloc函數(shù)完成內(nèi)存申請(qǐng)
malloc小于128k的內(nèi)存胸嘴,使用brk分配內(nèi)存,將_edata往高地址推,大于128k則使用mmap


![![內(nèi)存布局解釋.jpg](https://upload-images.jianshu.io/upload_images/8771417-cae724abc8623b30.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](https://upload-images.jianshu.io/upload_images/8771417-ec9b8e5778219e52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

[站外圖片上傳中...(image-4387ab-1614846532032)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末斩祭,一起剝皮案震驚了整個(gè)濱河市劣像,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摧玫,老刑警劉巖耳奕,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诬像,居然都是意外死亡屋群,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)坏挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芍躏,“玉大人,你說(shuō)我怎么就攤上這事降狠《钥ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵榜配,是天一觀的道長(zhǎng)否纬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蛋褥,這世上最難降的妖魔是什么烦味? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮壁拉,結(jié)果婚禮上谬俄,老公的妹妹穿的比我還像新娘。我一直安慰自己弃理,他們只是感情好溃论,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著痘昌,像睡著了一般钥勋。 火紅的嫁衣襯著肌膚如雪炬转。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天算灸,我揣著相機(jī)與錄音扼劈,去河邊找鬼。 笑死菲驴,一個(gè)胖子當(dāng)著我的面吹牛荐吵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赊瞬,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼先煎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了巧涧?” 一聲冷哼從身側(cè)響起薯蝎,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谤绳,沒(méi)想到半個(gè)月后占锯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缩筛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年烟央,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歪脏。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疑俭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婿失,到底是詐尸還是另有隱情钞艇,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布豪硅,位于F島的核電站哩照,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏懒浮。R本人自食惡果不足惜飘弧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砚著。 院中可真熱鬧次伶,春花似錦、人聲如沸稽穆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舌镶。三九已至柱彻,卻和暖如春豪娜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哟楷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工瘤载, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卖擅。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓鸣奔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親磨镶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溃蔫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容