編程的50種基礎(chǔ)算法 c語言變長數(shù)組和動態(tài)數(shù)組有什么區(qū)別,能否完全取代?
c語言變長數(shù)組和動態(tài)數(shù)組有什么區(qū)別,能否完全取代?動態(tài)數(shù)組的內(nèi)存空間是從堆中分配的。它通過執(zhí)行代碼來為代碼分配存儲空間。當(dāng)程序執(zhí)行這些語句時(shí),它會分配它們。程序員負(fù)責(zé)釋放內(nèi)存。Int*P=(Int*)
c語言變長數(shù)組和動態(tài)數(shù)組有什么區(qū)別,能否完全取代?
動態(tài)數(shù)組的內(nèi)存空間是從堆中分配的。它通過執(zhí)行代碼來為代碼分配存儲空間。當(dāng)程序執(zhí)行這些語句時(shí),它會分配它們。程序員負(fù)責(zé)釋放內(nèi)存。Int*P=(Int*)malloc(5*sizeof(Int)),相當(dāng)于Int P[5]可變長度數(shù)組。在C語言中,直到C99標(biāo)準(zhǔn)出現(xiàn)之前,在聲明數(shù)組時(shí),方括號中只能使用整數(shù)常量表達(dá)式。C99做了很大的改進(jìn),允許數(shù)組中的值是整數(shù)變量或整數(shù)表達(dá)式。這解釋了以下情況:int nscanf(%d”,&n)int array[n
從鍵盤向數(shù)組中輸入大量數(shù)據(jù)??蛇x的方法是估計(jì)最大數(shù)據(jù)量,根據(jù)這個(gè)值定義數(shù)組空間,完成數(shù)據(jù)輸入#definemax_uuum1000inta[MAX_uuunum]這個(gè)方法定義數(shù)組,方便又安全。缺點(diǎn)是數(shù)組空間的大小受到系統(tǒng)的限制,而且用這種方法定義的數(shù)據(jù)太多。在運(yùn)行時(shí),確定輸入數(shù)據(jù)的數(shù)量,并實(shí)現(xiàn)int*pintn printf(“input:”)scanf(%d“,&n)//輸入數(shù)據(jù)的數(shù)量(1)P=(int*)malloc(n*sizeof(int))//不需要?jiǎng)討B(tài)分配空間,記住釋放free(P)或(2)intpa[n]//C99支持動態(tài)數(shù)組,可根據(jù)n值動態(tài)定義。它還可以使用指針動態(tài)擴(kuò)展數(shù)組:首先分配一定的大小,然后在數(shù)組不夠時(shí)重新分配空間。#是否定義單元100預(yù)分配空間?定義len10 int*P=(int*)malloc(init) LEN*sizeof(int))int length=init的每個(gè)擴(kuò)展空間當(dāng)LEN不足時(shí),length=Ince lenp=(int*)realloc(P,length)//擴(kuò)展空間