当前位置:首页 > 内存 > 正文

动态内存分配数组

  • 内存
  • 2024-06-11 10:16:08
  • 9398

一、C++怎么动态分配一个数组并赋值在C++中,大家都可以使用new关键字动态分配数组,方法是:
int*arr=newint[变量或值];
可以动态分配指定长度的数组。C语言使用malloccalloc分配
如果要设置一个值;您可以在应用内存后使用字段来设置值。>memset(起始地址、要设置的值、长度);eg
int*arr=newint[10];memset(arr,0,arr+10);
这样,全部10个这个数组中的元素也可以从栈上的数组动态分配到值0
C99,但是声明时不能初始化
Intarr[variable]也是可以的。像这样写但如果不使用变量的话,可以这样
intarr[variable]={};。可以在右边写大括号进行初始化
也可以使用loop或者memset进行初始化
希望对你有帮助。


二、C语言如何动态分配二维数组??

动态分配二维数组:

voidmain(intargc,char*argv[])

{

intNC=100,NR=200;

inti,j;

char**a;//a[NR][NC]--*a[NR]--a[j][i]

a=(char**)malloc(sizeof(char*)*NR);

for(j=0;j

a[j]=(char*)malloc(sizeof(char)*NC);

}

//释放空间:free(a);

编译错误是因为问题里有p[j]=(char*)malloc,而不是(char*)malloc(n*sizeof(char))。

详细信息:

二维数组的动态分配

二维数组A[m][n],它是一个m行n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标为p到m+p,q到n+q的列下标存储在“row”中-majororder".,则元素a[i][j]的地址计算如下:

LOC(a[i][j])=LOC(a[p][q])+((i−p)*n+(j−q))*t

当以“列优先顺序”存储时,地址计算如下:

LOC(a[i][j])=LOC(a[p][q])+((j−q)*m+(i−p))*t

所需的最小单位数存储该数组的大小为(m-p+1)*(n-q+1)*t字节。

参考来源:--二维数组

参考来源:--C语言