出现编译器错误C3863不可指定数组类型”T [r-l+1]”和编译器错误C2131表达式的计算结果不是常数怎么办

来源:3-2 归并排序法的实现

Murrayxhng

2022-01-26

https://img.mukewang.com/szimg/61f1376e08fda70210000750.jpg
https://img.mukewang.com/szimg/61f1376e08218d3710000750.jpg

问题描述:


写回答

3回答

liuyubobobo

2022-01-27

@Cpaunvisual_studio 的回答非常正确。也可以参考这里:http://coding.imooc.com/learn/questiondetail/3044.html


具体代码可以参考这里课程代码中的注释说明:https://git.imooc.com/coding-71/coding-71/src/master/03-Sorting-Advance/Course%20Code%20%28C++%29/02-Merge-Sort/main.cpp


继续加油!:)

0
0

Cpaunvisual_studio

2022-01-26

我也用Visual Studio.我通常对变长数组用堆变量解决

0
0

Cpaunvisual_studio

2022-01-26

由于c++是静态编译,所以数组大小在编译时确定

可以采用堆数组,堆数组用new创建,堆变量在运行时确定

int a=8;
int b[a+1]; //错误: a+1表达式在运行才确定,但数组需要在编译时有具体大小

int x=8;
int *y=new int[x];//用简单地用指针指向堆数组地址

堆数组可以用一般方式与数组方式取值

*(heap_var+num);
heap_var[num];
0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程