3.分配一個堆空間,其大小為能容納幾個元素,沒有元素長度為size的函數(shù)
void calloc(unsigned n,unsigned size);
該函數(shù)將分配一個容量為n*size大小的堆空間,并用0初始化分配的空間。該函數(shù)將返回一個指向分配空間的指針,沒有空間可用時,則返回一個NULL指針。
4.重新分配堆空間函數(shù)
void *realloc(void *ptr,unsigned newsize);
該函數(shù)將對由ptr指向的堆空間重新分配,大小變?yōu)閚ewsize。
5.釋放堆空間函數(shù)
void free(void *ptr);
下面舉一個關(guān)于堆和棧的綜合例子:
void push(int);
int pop();
int *pi,*tos;
main()
{
int v;
pi=(int *)malloc(50*sizeof(int));
if(!pi)
{
printf(allocation failure\n);
exit(0);
}
tos=pi;
do
{
printf(please input value,push it;enter 0 then pop;(enter -1 then stop)\n);
scanf(%d,&v);
if(v!=0) push(v);
else printf(pop this is it %d\n,pop());
}
while(v!=-1);
}
void push(int i)
{
pi++;
if(pi==(tos+50))
{
printf(stack overflow\n);
exit(0);
}
*pi=i;
}
int pop()
{
if(pi==tos)
{
printf(stack underflow\n);
exit(0);
}
pi--;
return *(pi+1);
}
程序分配100字節(jié)的堆空間,轉(zhuǎn)換成int型賦給pi,當(dāng)pi為NULL時,表示沒有可用的空間了,則顯示allocation failure。輸入一個整數(shù),壓入棧中,當(dāng)超過50時,則顯示stack overflow.當(dāng)輸入0時,則把棧中的數(shù)據(jù)彈出。這個程序也演示了棧的后進先出的特點。
二、鏈表
相關(guān)推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |