函式原型:extern void *malloc(unsigned int num_bytes);
需要標頭檔案:#include <stdlib.h>
功能:分配長度為num_bytes位元組的記憶體塊
返回值:如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標NULL。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。函式返回的指標一定要適當對齊,使其可以用於任何資料物件。
說明:關於該函式的原型,在以前malloc返回的是char型指標,新的ANSIC標準規定,該函式返回為void型指標,因此必要時要進行型別轉換。
示例:
程式碼:
/*取一列整數,並按升序排列他們,最後列印*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int compare_integers(const void *a,const void *b)
{
int *pa = (int *)a;
int *pb = (int *)b;
/*return *pa>*pb?1:*pa<*pb?-1:0;*/
return *pa-*pb;
}
int main()
int *array;
int n_values;
int i;
printf("how many values are there?");
if(scanf("%d",&n_values)!=1||n_values<=0)
printf("illegal number of values.\n");
exit(EXIT_FAILURE);
array = (int *)malloc(n_values*sizeof(int));//分配記憶體,用於儲存這些值
if(array==NULL)
printf("can't get memory for that many values.\n");
for(i=0;i<n_values;i+=1)
printf("?");
if(scanf("%d",array+i)!=1)
printf("ERROR reading value #%d\n",i);
free(array);
qsort(array,n_values,sizeof(int),compare_integers);//使用快速排序法進行排序
printf("%d\n",array[i]);
return EXIT_SUCCESS;
函式原型:extern void *malloc(unsigned int num_bytes);
需要標頭檔案:#include <stdlib.h>
功能:分配長度為num_bytes位元組的記憶體塊
返回值:如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標NULL。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。函式返回的指標一定要適當對齊,使其可以用於任何資料物件。
說明:關於該函式的原型,在以前malloc返回的是char型指標,新的ANSIC標準規定,該函式返回為void型指標,因此必要時要進行型別轉換。
示例:
程式碼:
/*取一列整數,並按升序排列他們,最後列印*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int compare_integers(const void *a,const void *b)
{
int *pa = (int *)a;
int *pb = (int *)b;
/*return *pa>*pb?1:*pa<*pb?-1:0;*/
return *pa-*pb;
}
int main()
{
int *array;
int n_values;
int i;
printf("how many values are there?");
if(scanf("%d",&n_values)!=1||n_values<=0)
{
printf("illegal number of values.\n");
exit(EXIT_FAILURE);
}
array = (int *)malloc(n_values*sizeof(int));//分配記憶體,用於儲存這些值
if(array==NULL)
{
printf("can't get memory for that many values.\n");
exit(EXIT_FAILURE);
}
for(i=0;i<n_values;i+=1)
{
printf("?");
if(scanf("%d",array+i)!=1)
{
printf("ERROR reading value #%d\n",i);
free(array);
exit(EXIT_FAILURE);
}
}
qsort(array,n_values,sizeof(int),compare_integers);//使用快速排序法進行排序
for(i=0;i<n_values;i+=1)
{
printf("%d\n",array[i]);
}
free(array);
return EXIT_SUCCESS;
}