malloc与calloc

来源:互联网 发布:matlab 如何遍历数组 编辑:程序博客网 时间:2024/05/17 05:19
#include <stdio.h>
#include <stdlib.h>


//malloc一段空间   void *malloc(unsigned int size);
//calloc若干段空间 void *calloc(unsigned int num,unsigned int size);
//free释放指针p指向的内存空间 free(p);
//realloc(void *p,unsigned int size);将p指向的空间内存大小改为size


/*函数malloc()和函数calloc()的主要区别是前者不能初始化所分配的内存空间,而后者能。   
如果由malloc()函数分配的内存空间原来没有被使用过,则其中的每一位可能都是0;
如果这部分内存曾经被分配过,则其中可能遗留有各种各样的数据。
也就是说,使用malloc()函数的程序开始时(内存空间还没有被重新分配)能正常进行
但经过一段时间(内存空间还已经被重新分配)可能会出现问题。
*/
int main()
{
    int *p=NULL;
    int m,n,i,maxm,maxn,max=0,maxnum;
    printf("几个班?\n");
    scanf("%d",&m);
    printf("每个班人数?\n");
    scanf("%d",&n);


    p=(int*)malloc(m*n*sizeof(int));
    if (p==NULL)
    {
        printf("申请失败\n");
        exit(0);
    }
    printf("输入分数\n");
    for (i=0;i<m*n;i++)
    {
        scanf("%d",p+i);
        if(*(p+i)>max)
        {
            max=*(p+i);
            maxnum=i;
        }
    }
    printf("最大:%d\n班级:%d\n第几个:%d\n",max,maxnum/n+1,maxnum%n+1);
    free(p);
    return 0;
}
原创粉丝点击