vc動(dòng)態(tài)數(shù)組重新賦值怎么操作 c語(yǔ)言中不知道數(shù)組長(zhǎng)度的情況下,怎么申請(qǐng)空間?
c語(yǔ)言中不知道數(shù)組長(zhǎng)度的情況下,怎么申請(qǐng)空間?那個(gè) 這是個(gè)好問(wèn)題。目前我能想到的就是用鏈表結(jié)構(gòu)代替數(shù)組,或者更確切的說(shuō),用alloc函數(shù)來(lái)構(gòu)建一個(gè)鏈表。與數(shù)組不同的是,數(shù)組的元素在內(nèi)存中是一個(gè)連續(xù)的區(qū)
c語(yǔ)言中不知道數(shù)組長(zhǎng)度的情況下,怎么申請(qǐng)空間?
那個(gè) 這是個(gè)好問(wèn)題。目前我能想到的就是用鏈表結(jié)構(gòu)代替數(shù)組,或者更確切的說(shuō),用alloc函數(shù)來(lái)構(gòu)建一個(gè)鏈表。
與數(shù)組不同的是,數(shù)組的元素在內(nèi)存中是一個(gè)連續(xù)的區(qū)域,而鏈表的節(jié)點(diǎn)在內(nèi)存中是一個(gè)離散的區(qū)域,所以鏈表的運(yùn)行效率比數(shù)組差一點(diǎn)。
如果有朋友的其他,可以留言,一起討論!
動(dòng)態(tài)內(nèi)存擴(kuò)展。例如,將一個(gè)文件裝入內(nèi)存,寫入長(zhǎng)度和數(shù)據(jù)類型(字符、結(jié)構(gòu)、二進(jìn)制數(shù)等。)轉(zhuǎn)換成alloc函數(shù),并將第一個(gè)地址指針?lè)祷亟o*ptr,就可以使用了。對(duì)了,vc ten是用new擴(kuò)展的,方法同上。
浪費(fèi)不可避免。但是你可以封裝一個(gè)間接調(diào)用malloc的函數(shù),在里面判斷,超過(guò)了再申請(qǐng),沒(méi)有的話從里面申請(qǐng)。實(shí)際上,這類似于操作系統(tǒng)的堆內(nèi)存管理器。
在這種情況下,有兩種解決方案。
1.如果你只是不 我不知道大小,但你知道上限。然后可以聲明有上限的數(shù)組變量。優(yōu)點(diǎn)是程序大小在編譯時(shí)就確定了;運(yùn)行時(shí)數(shù)組的內(nèi)存空間是從堆棧中分配的;不需要手動(dòng)釋放內(nèi)存;很快。缺點(diǎn)是會(huì)浪費(fèi)空間。
2.否則只能通過(guò)動(dòng)態(tài)申請(qǐng)內(nèi)存空間(malloc)來(lái)解決問(wèn)題??梢栽O(shè)計(jì)一個(gè)兩倍于滿的數(shù)組,然后復(fù)制原數(shù)組,將指針指向新數(shù)組,最后釋放舊內(nèi)存空間。好處是你不 不必?fù)?dān)心陣列容量(主題提出的主要問(wèn)題);唐 不要浪費(fèi)空間。但缺點(diǎn)也很明顯:操作復(fù)雜;內(nèi)存從堆中分配,可能不夠用;必須手動(dòng)分配和釋放內(nèi)存;速度慢。
因?yàn)槲抑换卮饠?shù)組。所以解決方法還是比較多的:可以參考其他大神的方法,使用其他數(shù)據(jù)結(jié)構(gòu)。我贏了。;這里就不重復(fù)了。
怎樣將字符數(shù)組轉(zhuǎn)換為整形數(shù)組?
//#includestdafx.h//vc 6.0加這行。# includesdio . hvoidmain(void){ charstr[]{ 11,12,13,14,15,16,17,18,19,20 };intdstr[10],I;for(i0;i10dstr[I]str[I]);printf(
);}其實(shí)不需要轉(zhuǎn)換。char數(shù)組是一個(gè)單字節(jié)的整數(shù)數(shù)組,直接用就行了...