c語言中不知道數組長度的情況下,怎么申請空間?
那個這是個好問題。目前我能想到的就是用鏈表結構代替數組,或者更確切的說,用alloc函數來構建一個鏈表。
與數組不同的是,數組的元素在內存中是一個連續的區域,而鏈表的節點在內存中是一個離散的區域,所以鏈表的運行效率比數組差一點。
如果有朋友的其他,可以留言,一起討論!
動態內存擴展。例如,將一個文件裝入內存,寫入長度和數據類型(字符、結構、二進制數等。)轉換成alloc函數,并將第一個地址指針返回給*ptr,就可以使用了。對了,vcten是用new擴展的,方法同上。
浪費不可避免。但是你可以封裝一個間接調用malloc的函數,在里面判斷,超過了再申請,沒有的話從里面申請。實際上,這類似于操作系統的堆內存管理器。
在這種情況下,有兩種解決方案。
1.如果你只是不我不知道大小,但你知道上限。然后可以聲明有上限的數組變量。優點是程序大小在編譯時就確定了;運行時數組的內存空間是從堆棧中分配的;不需要手動釋放內存;很快。缺點是會浪費空間。
2.否則只能通過動態申請內存空間(malloc)來解決問題。可以設計一個兩倍于滿的數組,然后復制原數組,將指針指向新數組,最后釋放舊內存空間。好處是你不不必擔心陣列容量(主題提出的主要問題);唐不要浪費空間。但缺點也很明顯:操作復雜;內存從堆中分配,可能不夠用;必須手動分配和釋放內存;速度慢。
因為我只回答數組。所以解決方法還是比較多的:可以參考其他大神的方法,使用其他數據結構。我贏了。;這里就不重復了。
怎樣將字符數組轉換為整形數組?
//#includestdafx.h//vc6.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(
);}其實不需要轉換。char數組是一個單字節的整數數組,直接用就行了...