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 谢谢大神了!!!
展开
 我来答
告运洁鄢罗
2020-01-16 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:762万
展开全部
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个元素的空间。
爱笑的笔迹
2015-04-25 · TA获得超过639个赞
知道小有建树答主
回答量:161
采纳率:66%
帮助的人:89万
展开全部
C语言中没有new这个关键字!
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型动态数组!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友471ccf5f4
推荐于2016-05-20 · TA获得超过323个赞
知道小有建树答主
回答量:342
采纳率:25%
帮助的人:125万
展开全部

如下所示:

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));
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式