malloc & free

动态分配内存

#include<stdio.h>
#include<stdlib.h>

int compare_integers(void const *a,void const *b)
{
    register int const *pa = a;
    register int const *pb = b;

    return *pa>*pb ? 1:*pa<*pb ? -1:0;
}

int main()
{
    int *array;
    int n_value;
    int i;
    printf("How many values are there?\n");

    if(scanf("%d",&n_value)!=1 || n_value<0)
    {
        printf("Illegal numbers of values.\n");
        exit(EXIT_FAILURE);
    }

    array = (int *)malloc(n_value*sizeof(int));
    if(NULL == array)
    {
        printf("Cant get memery for that many values.\n");
        exit(EXIT_FAILURE);
    }
    
    for(i = 0;i<n_value;i++)
    {
        printf("?");
        if(scanf("%d",array+i)!=1)
        {
            printf("Error reading value #%d.\n",i);
            exit(EXIT_FAILURE);
        }
    }
    qsort(array,n_value,sizeof(int),compare_integers);

    for(i = 0;i<n_value;i++)
    {
        printf("%d ",array[i]);
    }

    free(array);
    return EXIT_SUCCESS;
}

 

posted @ 2013-10-24 15:03  平林新袖  阅读(349)  评论(0编辑  收藏  举报