C/C++--定义不定长度的动态数组

C——malloc

一维数组

#include<studio.h>
#include<stdlib.h> //使用mollac
#include<memory.h> //使用memset
int mian()
{
 int n;
 scanf("%d",&n);
 int *m;
 m=(int*)malloc(n*(sizeof(int)));
 memset(m,0,n);   //初始化 
 int i;
 for(i=0;i<n;i++)
 {
  m[i]=i;
 } 
 free(m);//释放内存
 return 0;
}

二维数组

#include<studio.h>
#include<stdlib.h> //使用mollac
int mian()
{
 int a,b;    
 scanf("%d %d",&a,&b);
 int **m;
 m=(int**)malloc(a*(sizeof(int*)));
 int i,j;
 for(i=0;i<a;i++)
 {
  m[i]=(int*)malloc(sizeof(int)*b);
 }
 for(i=0;i<a;i++)
 {
  for(j=0;j<b;j++)
  {
   m[i][j]=1; 
  }
 } 
 for(i=0;i<a;i++)
 {
  free(m[i]);
 }
 free(m);//释放内存
 return 0;
}


C++——new

c++要求定义数组时,必须明确给定数组的大小,要不然编译通不过

如: int Array[5];正确

   int i=5;
   int Array[i]; 错误 因为在编译阶段,编译器并不知道 i 的值是多少
类型 *m;
m=new 类型[长度];
delete []m;

一维数组

int n=10;
int *p=new int[n];

二维数组

 int size=50,Column=50;
  int (*p)[Column]=new int [size][Column]

是错误的,column需要是常数
改成如下:

int n=10;
int (*m)[10]=new int [n][10];
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态长度的指针数组是指在程序运行时根据需要动态分配内存空间的指针数组。在C语言中,可以使用动态内存分配函数malloc()来实现动态长度的指针数组。 首先,我们需要定义一个指针数组,可以使用指针类型的数组变量来存储多个指针。例如: int* arr[] = {NULL}; // 定义一个初始大小为1的指针数组 接下来,我们可以使用malloc()函数来为指针数组分配内存空间。例如,假设我们需要将指针数组扩展到5个指针: arr = (int**) malloc(5 * sizeof(int*)); // 分配5个指针大小的内存空间 然后,我们可以使用循环操作来对动态长度的指针数组进行赋值或访问。例如,我们可以为每个指针分配内存空间,然后将其赋值给指针数组中的对应位置: for(int i = 0; i < 5; i++) { arr[i] = (int*) malloc(sizeof(int)); // 分配每个指针指向的内存空间 *arr[i] = i + 1; // 将值赋给对应指针所指向的内存空间 } 最后,当我们不再需要使用动态长度的指针数组时,需要使用free()函数来释放所分配的内存空间,防止内存泄漏。 for(int i = 0; i < 5; i++) { free(arr[i]); // 释放每个指针指向的内存空间 } free(arr); // 释放指针数组的内存空间 总结起来,动态长度的指针数组是通过malloc()函数来动态分配内存空间的指针数组,可以根据需求来自由扩展或缩小数组的大小。使用完毕后,需要手动释放所分配的内存空间,以免造成内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值