导航:首页 > 创造发明 > malloc函数创造的数组

malloc函数创造的数组

发布时间:2021-01-14 13:49:02

❶ 用malloc函数动态分配内存来建立一个一维数组

int * Createl(int n)
{
//int *array=NULL; //这行不要!!! 这里用的是局部变量,没有付给全局变量。

array=(int *)malloc(sizeof(int)*n); //加一个强制转换
//return &array[0]; //这里也版不对,改权成下面的
return array;

}

❷ C语言“堆”申请为什么用malloc函数,用数组不行吗

1、这个涉及两个复存储区域,堆和制栈,用malloc申请的空间在堆上,char a[10]这个是在栈上。堆和栈最重要一个区别是,栈是系统管理的的,他负责回收和释放,所以有个概念叫作用域,变量的作用域一结束,栈就回收变量的资源。但是堆是程序员管理的,程序员不释放,除非进程结束,这个空间就一直在那,就有了一定灵活性。
2、当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,即malloc函数。
malloc函数原型:extern void *malloc(unsigned int num_bytes);
头文件:#include <stdlib.h>
功能:分配长度为num_bytes字节的内存块
返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。
说明:关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。

❸ malloc函数定义double型数组

double *a=(double *)malloc(n*sizeof(double));
a[0]=xxx;
只要定义一个对应类型的指针就可以了,因为数组本质可内以看成是通过指针运算取得每个元素的地址,进而容取得对应的值,而不同的指针类型的运算减的法则就是加上对应的n个单位,比如char * a和 int * a ;同样执行a++操作结果是不同的,因为char 的基本单位是1,而int一般是2或4

❹ 怎么用malloc函数分配这样大小的数组。

int
**buff;
buff
=
(int**)malloc(sizeof(int*)*x);
=>分配一个int*的数组,其中有x个int*个指针
for(int
i
=
0;
i
<
x;
i++)
{
*(buff+i)
=
(int*)malloc(sizeof(int)*y);
=>再分配每个int*指向的数组,每个数组里面有y个int
}
这是版采用这权种两级指针的方法进行分配

❺ C语言用malloc函数定义数组

int* arr;
int n = 5;
arr = (int*)malloc(n*sizeof(int));

然后抄就定义好了呀,这就是你需要的那种malloc分配空间的数组,使用结束需要释放掉,free(arr)。

❻ c语言:怎样用malloc函数动态分配二维数组,使之可输入数组的行数和每行的列数。

假设我需要一个nrows、ncolumns数组,则可以用以下几种方法动态分配空间:
1.动态数组的成员都可以用正常的数组下标 Array[i][j]
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int **Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int **)malloc(nrows*sizeof(int *));
for(i=0;i<ncolumns;i++)
Array[i]=(int *)malloc(sizeof(*Array));
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i][j]=1;
printf("%d ",Array[i][j]); //动态数组的成员都可以用正常的数组下标 arrayx[i][j]
}
printf("\n");
}
free(Array);
}
2.让数组的内容连续, 但在后来重新分配列的时候会比较困难, 得使用一点指针算术:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int **Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int **)malloc(nrows*sizeof(int *));
Array[0]=(int *)malloc(nrows*ncolumns*sizeof(int));
for(i=1;i<nrows;i++)
Array[i]=Array[0]+i*ncolumns;
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i][j]=1;
printf("%d ",Array[i][j]); //动态数组的成员都可以用正常的数组下标 arrayx[i][j]
}
printf("\n");
}
free(Array);
}
3.同一个单独的动态分配的一维数组来模拟二维数组:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int *Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int *)malloc(nrows*ncolumns*sizeof(int *));
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i*nrows+j]=1;
printf("%d ",Array[i*nrows+j]); //用 array3[i * ncolumns + j] 访问第 i, j 个成员
}
printf("\n");
}
free(Array);
}

❼ C语言malloc与new函数创建二维数组

malloc的时候,指定的数组的大小
new 指定的是元素个数。
如果你用malloc的参数去执行new,会比你要求的实际空间大很多,甚至导致申请内存过大而出错。
其他的 没什么区别了。

❽ malloc创建的二维数组怎样作为自定义函数的参数

和普通的数组名作为函数形参时一样。malloc函数成功时要将首地址强制为回某种类型的答指针赋给同类型的指针变量,那么定义函数时接收实参的形参类型就是这个“被强制的某种类型”的指针。比如有int *p=(int *)malloc(...);,自定义函数的形式参数的类型就是int *型。二维数组申请成功后,自定义函数的形式参数的类型应该是int (*)[x],x是列数。

❾ 关于malloc函数创建一个二维数组

需要为每个p[i]分配空间 修改如下

#include<iomanip>
#include<cstdlib>
usingnamespacestd;
intmain()
{
inti,j;
introw,coloum;
int**p;
cout<<"请输入行和列"<<endl;
cout<<"行:";
cin>>row;
cout<<"列:";
cin>>coloum;
p=(int**)malloc(sizeof(int*)*row);
for(i=0;i<row;i++)
p[i]=(int*)malloc(sizeof(int)*coloum);
for(i=0;i<row;i++)
{
for(j=0;j<coloum;j++)
cin>>p[i][j];
cout<<endl;
}
for(i=0;i<row;i++)
{
for(j=0;j<coloum;j++)
cout<<setw(5)<<p[i][j];
cout<<endl;
}
}

❿ 已经指定长度的数组还需要malloc函数来动态申请空间吗

动态数组要,但看你的应该是静态数组,那是自动分配的

阅读全文

与malloc函数创造的数组相关的资料

热点内容
武汉疫情投诉 浏览:149
知识产权合作开发协议doc 浏览:932
广州加里知识产权代理有限公司 浏览:65
企业知识产权部门管理办法 浏览:455
消费315投诉 浏览:981
马鞍山钢城医院 浏览:793
冯超知识产权 浏览:384
介绍小发明英语作文 浏览:442
版权使用权协议 浏览:1000
2018年基本公共卫生服务考核表 浏览:884
马鞍山候车亭 浏览:329
学校矛盾纠纷排查领导小组 浏览:709
张江管委会知识产权合作协议 浏览:635
关于开展公共卫生服务项目相关项目督导的函 浏览:941
闺蜜证书高清 浏览:11
转让房转让合同协议 浏览:329
矛盾纠纷排查调处工作协调交账会议纪要 浏览:877
云南基金从业资格证书查询 浏览:313
新知识的摇篮创造力 浏览:187
股转转让协议 浏览:676