ing 发表于 2020-2-28 23:53

VisualStudio 数组长度必须是常量

本帖最后由 ing 于 2020-2-29 01:09 编辑

scanf_s(“%d”,&(*g)->vertexNum);    在VS中,这种赋值方式导致了下面的问题


Clion并不会有这种问题


但我确实需要这种写法知道顶点数量,该怎么解决?

深夜雪 发表于 2020-2-29 00:36

可以使用链表list或者容器vector

absman1972 发表于 2020-2-29 00:38

c/c++陣列大小在編譯階段就需要知道
如果不是固定的大小(或是編譯階段無法確定大小),需要使用new來完成,但使用完後需要delete
int *indegree = new int[(*g)->vertexNum];
...
使用中
...
delete [] indegree;

或是也可以使用vector之類的template,可以當做線性、長度可變的資料容器
就不舉例了,網上很容易找到資料


ing 发表于 2020-2-29 20:34

这是我的解决方法,把指针当数组用
int *indegree = (int*)malloc(n*sizeof(int));

absman1972 发表于 2020-3-1 23:44

ing 发表于 2020-2-29 20:34
这是我的解决方法,把指针当数组用
int *indegree = (int*)malloc(n*sizeof(int));

malloc也完全可以,差別在要自己轉指針型別, 並計算正確size
因為它只會分配連續的byte,但使用完後也一樣記得要free記憶體

另外最好養成習慣,malloc後檢查指針是否有效
避免分配失敗,造成不可預期的結果
页: [1]
查看完整版本: VisualStudio 数组长度必须是常量