回覆列表
  • 1 # 使用者2809959489471608

    函式原型: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;

    }

  • 中秋節和大豐收的關聯?
  • 世界十大怪物電影的名字都是什麼?