简述动态分配内存,c语言永远的神

来个例子吧,动态数组求最大值   其实动态开辟数组就是为了节省空间而已

#include<stdio.h>
#include<malloc.h>
int max(int *r,int n)
{
    int max=r[0];//假设一个最大值
    for(int i=0;i<n;i++)
    {
        if(max<r[i])
        {
            max=r[i];
        }
    }
    return max;
}
int main()
{
    int n,i;
    scanf("%d",&n);
    int *p=NULL;//先定义p为空指针
    p=(int *)malloc(n*sizeof(int));//这个的意思就是长度为n,且每个都是int字节
    for(i=0;i<n;i++)
    {
        scanf("%d",&p[i]);//输入进数组
    }
    printf("%d",max(p,n));
    free(p);//释放动态空间
    return 0;
}

在这里我要介绍的还有calloc,realloc以及calloc和memset的区别

calloc使用后会使申请的空间全置0,这一点和memset一样,memset的头文件是string.h

他俩的使用方式我呈现以下(int *)calloc(5,sizeof(int)),memset(a,0,sizeof(a)),都是起到将数组进行初始化的目的,而我认为memset更胜一筹,它不仅可以初始化数组为0,还可以初始化为任何值

realloc呢,使用在你发现开辟的数组小了,那你还是可以挽回的。

重新开辟一个大的

比如  int*p=(int *)malloc(10,sizeof(int))开小了    在后面加p=(int *)realloc(p,100*sizeof(int));

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forget hurt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值