VisualStudio 数组长度必须是常量
本帖最后由 ing 于 2020-2-29 01:09 编辑scanf_s(“%d”,&(*g)->vertexNum); 在VS中,这种赋值方式导致了下面的问题
Clion并不会有这种问题
但我确实需要这种写法知道顶点数量,该怎么解决? 可以使用链表list或者容器vector c/c++陣列大小在編譯階段就需要知道
如果不是固定的大小(或是編譯階段無法確定大小),需要使用new來完成,但使用完後需要delete
int *indegree = new int[(*g)->vertexNum];
...
使用中
...
delete [] indegree;
或是也可以使用vector之類的template,可以當做線性、長度可變的資料容器
就不舉例了,網上很容易找到資料
这是我的解决方法,把指针当数组用
int *indegree = (int*)malloc(n*sizeof(int)); ing 发表于 2020-2-29 20:34
这是我的解决方法,把指针当数组用
int *indegree = (int*)malloc(n*sizeof(int));
malloc也完全可以,差別在要自己轉指針型別, 並計算正確size
因為它只會分配連續的byte,但使用完後也一樣記得要free記憶體
另外最好養成習慣,malloc後檢查指針是否有效
避免分配失敗,造成不可預期的結果
页:
[1]