动态内存分配malloc

 12.4,p396

分配内存:malloc()和free()

1,所有程序都必须留有足够的内存来存储程序使用的数据,这些内存有的是自动分配 

float x;

char place[] = "Dancing"

2,可以声明预留

int place[100];

3,malloc()函数 

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

使用malloc()函数的头文件。

int main(void){
    int a[5]={4,10,2,8,6};
    printf("请输入您需要的数组的长度:len = ");
    scanf("%d",&len);
    int * pArr = (int *)malloc(sizeof (int) * len);
  1. sizeof(20) 申请20个字节
  2. int int字节。
  3. malloc函数只能返回第一个字节地址,无论一个变量占几个字节它都只返回第一个字节地址,
  4. (int *)强制类型转换,转换成第一个int类型变量的地址 
  5. 写完malloc()就写指针写数组都一样了。
    *pArr = 4;    //类似a[0]=4  
    pArr[1]=10;    //类似a[1]=10;
    printf("%d %d",*pArr,pArr[1]);    //我们可以把pArr当作一个普通数组来使用
    for(int i = 0;i<len;++i)
        scanf("%d",&pArr[i]);
    for(i=0;i<len;++i)
        printf("%d\n",*(pArr+i)); 
    free(pArr);    //把pArr所代表的动态分配的20个字节的内存释放 
     
    return 0;
} 

malloc()函数

  • 接受参数:所需内存字节数;
  • malloc会找到合适的空闲内存块,内存块的匿名的,即不会为它赋名;
  • 要把地址赋值给一个指针变量,并使用指针访问这块内存;
  • 返回值:内存块的首字节字母;
  • malloc()可用于返回指向数组的指针、指向结构的指针等。所以通常把返回值强制转换为匹配的类型。
  • 指向void的指针赋给指针不用考虑类型。
  • 如果内存分配失败,返回空指针。

ptd = (int *)malloc(30 * sizeof(int));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值