C语言如何动态分配数组
要分别用new和mallocvoidMsort(RcdTypeSR[],RcdTypeTR1[],ints,intt){RcdTypeTR2[t-s+1];if(s==t...
要分别用new和malloc
void Msort ( RcdType SR[], RcdType TR1[], int s, int t ) {
RcdType TR2[t-s+1];
if (s==t) TR1[s] = SR[s];
else {
m = (s+t)/2;
Msort (SR, TR2, s, m);
Msort (SR, TR2, m+1, t);
Merge (TR2, TR1, s, m, t);
}
}
其他的不用看
这句 RcdType TR2[t-s+1]; 要写完可以运行的,要分别用new和malloc 谢谢大神了!!! 展开
void Msort ( RcdType SR[], RcdType TR1[], int s, int t ) {
RcdType TR2[t-s+1];
if (s==t) TR1[s] = SR[s];
else {
m = (s+t)/2;
Msort (SR, TR2, s, m);
Msort (SR, TR2, m+1, t);
Merge (TR2, TR1, s, m, t);
}
}
其他的不用看
这句 RcdType TR2[t-s+1]; 要写完可以运行的,要分别用new和malloc 谢谢大神了!!! 展开
3个回答
展开全部
1
定义指针。
2
使用malloc函数分配内存。
3
对数组进行访问即可。
对于一维动态数组,直接定义一维指针,并分配内存空间即可。
比如int类型的10个元素动态数组,写作
int
*a;
a
=
(int
*)malloc(sizeof(int)
*
10);
如果是多维数组,需要从高维向低维逐层分配。如二维数组10*100空间。
int
**a;
int
i;
a
=
(int
**)
malloc(sizeof(int
*)
*
10);
//
先分配10个int*的空间。
for(i
=
0;
i
<
100;
i
++)
a[i]
=
(int
*)malloc(sizeof(int)
*
100);
//
对于每个int*,分配100个元素的空间。
定义指针。
2
使用malloc函数分配内存。
3
对数组进行访问即可。
对于一维动态数组,直接定义一维指针,并分配内存空间即可。
比如int类型的10个元素动态数组,写作
int
*a;
a
=
(int
*)malloc(sizeof(int)
*
10);
如果是多维数组,需要从高维向低维逐层分配。如二维数组10*100空间。
int
**a;
int
i;
a
=
(int
**)
malloc(sizeof(int
*)
*
10);
//
先分配10个int*的空间。
for(i
=
0;
i
<
100;
i
++)
a[i]
=
(int
*)malloc(sizeof(int)
*
100);
//
对于每个int*,分配100个元素的空间。
展开全部
C语言中没有new这个关键字!
new是C++的内存分配..
C语言中用malloc()
example:
pointer(对应的类型指针)=(指针类型)malloc(size(长度或者大小如果)*sizeof(数据类型));
new是C++的内存分配..
C语言中用malloc()
example:
pointer(对应的类型指针)=(指针类型)malloc(size(长度或者大小如果)*sizeof(数据类型));
追问
那我学的应该是C++吧, 你用C++里的malloc函数写我看看
追答
C++里面中malloc与C语言里面也是一样的!
只不过,要头文件变成了
#include
如果分配int 型动态数组!
int*p;//p是指针变量名
int length;
cin>>length;//输入数组长度!
p=(int*)malloc(length*sizeof(int));
/*然后就跟数组一样的使用了!注意是分配了从0开始到length-1个空间*/
for(int i=0;i>p[i];
malloc()函数默认返回void*型指针,需要强制类型转换为int*型这样才是int型动态数组!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如下所示:
RcdType *TR2 = malloc(sizeof(RcdType) * (t - s + 1));
RcdType *TR2 = new RcdType[t-s+1];
追问
第二句是对的,第一句好像出了些问题,可能是我的问题,请你帮帮忙呀
错误提示:error C2440: 'initializing' : cannot convert from 'void *' to 'RcdType *'
我改成sizeof(int)也不行
错误是跟上面显示的一样
追答
类型强制转换:
RcdType *TR2 = (RcdType *)malloc(sizeof(RcdType) * (t - s + 1));
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询