动态内存管理 题目1

本文介绍了一个C语言函数,该函数能够从标准输入读取一系列整数,并将它们存储在一个动态分配的数组中。数组的第一个元素记录了整数的数量,其余元素则依次存储输入的整数。文章展示了如何实现内存的动态分配与重新分配,确保能存储任意数量的有效输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个函数,从标准输入读取一列整数,把这些值存储于一个动态分配的数
组中并返回这个数组。数组的第一个数是数组包含的值的个数,它的后面就是这些整数值。

#define MAXSIZE 3

int *getNum(int database[])
{
   int i = 0;       //计数变量
   int j = 0;
   int input;   //存放每一次输入的数据

   database = (int*)malloc(sizeof(int)*MAXSIZE); //为数组申请初始空间
   if(!database){           //如果未申请到足够的空间
    printf("cannot get enough memory/n");
    exit(1);
   }
   printf("Please input numbers/n");   //输入整型数据,若输入合法并且不为'A'
   while(scanf("%d", &input) && input != 'A'){
    i++;
    if(i > MAXSIZE - 1){
      database = (int*)realloc(database, sizeof(int)*(i+1));
      if(!database){        //如果未申请到足够的空间
        printf("cannot get enough memory/n");
      }
    }
    database[0] = i;         //
    database[i] = input;
   }

   while(j <= i){
    printf("%d/t", database[j]);
    j++;
   }
   return database;

}
int main()
{
    int *data = NULL;
    getNum(data);

    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值