-
malloc是C語言標(biāo)準(zhǔn)庫中的函數(shù),用于在堆內(nèi)存中動態(tài)分配指定大小的內(nèi)存空間。它的聲明如下:
c
void *malloc(size_t size);
malloc函數(shù)接受一個(gè)參數(shù)size,表示要分配的內(nèi)存空間的字節(jié)數(shù)。它返回一個(gè)指向分配的內(nèi)存空間起始地址的指針。
在這段代碼中,函數(shù)func使用malloc函數(shù)動態(tài)分配了4個(gè)int類型元素大小的內(nèi)存空間,并將起始地址賦給指針變量arr。然后,函數(shù)將這個(gè)指針變量作為返回值返回給調(diào)用者。
在main函數(shù)中,通過調(diào)用func函數(shù)獲取到分配的內(nèi)存空間的起始地址,并將該地址賦給指針變量p。然后,通過調(diào)用free函數(shù),釋放了這塊內(nèi)存空間。
總之,malloc函數(shù)可以用來動態(tài)分配內(nèi)存空間,而free函數(shù)則用來釋放已經(jīng)分配的內(nèi)存空間,以便其他程序或資源可以重復(fù)利用它們。在使用malloc函數(shù)分配內(nèi)存后,務(wù)必使用相應(yīng)的free函數(shù)釋放內(nèi)存,以避免內(nèi)存泄漏問題。查看全部 -
const 修飾普通變量
const int a,?則表示 a 是一個(gè)常量,你不可以在后續(xù)對其進(jìn)行修改。因?yàn)?a 不可修改,所以在創(chuàng)建的時(shí)候就要對 a 進(jìn)行賦值,不對其進(jìn)行賦值則會報(bào)錯(cuò)。
const 修飾指針
只有一個(gè) const,如果 const 位*左側(cè),表示指針?biāo)笖?shù)據(jù)是常量,不能通過解引用修改該數(shù)據(jù);指針本身是變量,可以指向其他的內(nèi)存單元。
int const * p = &a;
只有一個(gè) const,如果 const 位于*右側(cè),表示指針本身是常量,不能指向其他內(nèi)存地址;指針?biāo)傅臄?shù)據(jù)可以通過解引用修改。
int * const p = &a;
兩個(gè) const,*左右各一個(gè),表示指針和指針?biāo)笖?shù)據(jù)都不能修改
const修飾函數(shù)參數(shù)
?const 修飾函數(shù)參數(shù)的時(shí)候,其作用域僅僅限制在函數(shù)內(nèi)部,只要在函數(shù)中保持其不變性就可以了。
const修飾成員函數(shù)
const修飾的成員函數(shù)不能修改任何的成員函數(shù),
const修飾的成員函數(shù)不能調(diào)用非const成員函數(shù)。
const修飾函數(shù)返回值
址傳遞,返回指針,引用。該返回值加一個(gè)const,可以防止返回值被調(diào)用。
值傳遞,值傳遞時(shí),返回值會復(fù)制一份,加不加const都可以。
查看全部 -
靜態(tài)聯(lián)編
···c
Child * obj = new Child();
Base * baseobj = (Base *)obj;
baseobj->func();
delete obj;
return 0;再來看看這個(gè)例子,我們通過強(qiáng)制轉(zhuǎn)換來指定 func 執(zhí)行的是哪個(gè)。這個(gè)過程是在編譯階段就將函數(shù)實(shí)現(xiàn)和函數(shù)調(diào)用關(guān)聯(lián)起來,因此靜態(tài)聯(lián)編也叫早綁定,在編譯階段就必須了解所有的函數(shù)或模塊執(zhí)行所需要檢測的信息。
動態(tài)聯(lián)編:
運(yùn)行虛函數(shù)的實(shí)現(xiàn)
查看全部 -
繼承與多態(tài)
查看全部 -
要將對象分配到堆上,需要用到另外兩個(gè)關(guān)鍵字,new 和 delete。new 用來分配對象,delete 用來刪除對象。new 會返回一個(gè)指針,在使用完畢后,要通過 delete 把這個(gè)指針指向的地址釋放掉。
查看全部 -
無法確認(rèn)指向的指針,或者指向一個(gè)無效地址的指針,我們把他叫做野指針
查看全部 -
如果想要通過指針操作變量,只需要使用解引用就可以了
查看全部 -
對于指針的復(fù)制,就不能用淺拷貝構(gòu)造函數(shù),要用深拷貝構(gòu)造函數(shù),即對被復(fù)制對象會新開辟一個(gè)空間,把要復(fù)制的指針指向的內(nèi)容復(fù)制一份到新內(nèi)存空間,這樣深拷貝構(gòu)造之后,兩個(gè)指針指向的值是相同的,且空間獨(dú)立。查看全部
-
要記得在cpp中展開定義時(shí),要包含相應(yīng)的hpp頭文件查看全部
-
類的成員默認(rèn)是私有的查看全部
-
面向過程是自頂向下的思想,邏輯主要是順序,選擇,循環(huán),用動作(數(shù)據(jù))的步驟查看全部
-
比起直接調(diào)用函數(shù),用指針函數(shù)去調(diào)用,可以得到用一個(gè)變量get函數(shù)返回值,也可以調(diào)用時(shí)傳遞參數(shù)查看全部
-
數(shù)組名相當(dāng)于一個(gè)常量指針查看全部
-
函數(shù)指針的定義和調(diào)用
查看全部 -
字節(jié)序,就是 大于一個(gè)字節(jié)類型的數(shù)據(jù)在內(nèi)存中的存放順序。
計(jì)算機(jī)硬件有兩種儲存數(shù)據(jù)的方式:大端字節(jié)序(big endian)和小端字節(jié)序(little endian)。
我們現(xiàn)在有一個(gè)整數(shù)是258。用16進(jìn)制表示是0x0102,然后我們把這個(gè)整數(shù)拆分成兩個(gè)字節(jié),第一個(gè)字節(jié)為 0000 0001,第二個(gè)字節(jié)為 0000 0010。
查看全部
舉報(bào)