吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1936|回复: 5
收起左侧

[已解决] VisualStudio 数组长度必须是常量

[复制链接]
ing 发表于 2020-2-28 23:53
本帖最后由 ing 于 2020-2-29 01:09 编辑

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

Clion并不会有这种问题
捕获2.PNG

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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
浅笑心柔 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

深夜雪 发表于 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後檢查指針是否有效
避免分配失敗,造成不可預期的結果
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表