【问题标题】:array elements cannot be modified c++数组元素不能被修改c ++
【发布时间】:2019-09-26 23:04:02
【问题描述】:

数组中的knots元素没有被修改,打印出来的每个元素都是0,这是为什么呢?

double* knots;
knots = (double*)malloc(sizeof(double) * numKeys);
// Initializaiton
for (int i = 0; i < numKeys; i++) {
    knots[i] = 0;
}
// assign value
for (int i = 0; i < numKeys; i++) {
    knots[i] = -1 + i;
    printf("%d\n", knots[i]);
}

【问题讨论】:

  • 您应该避免在c++ 中使用 printf 和 malloc。 c++ 标准库中有更好的替代方案。
  • 您可以将初始化循环替换为std::fill
  • 使用std::vector,而不是使用动态分配的数组(并且必须稍后删除内存)

标签: c++ arrays malloc


【解决方案1】:

要打印双打,请改用"%lf\n"。 (lf = 长浮点数)

【讨论】:

  • 旧编译器用户注意事项:%lf 需要 C++11 或更高版本。 %f 可以在旧系统上使用,并且等效(对于 printf;不等效于 scanf)。
【解决方案2】:

改变这个:

printf("%d\n", knots[i]);

到这里:

printf("%f\n", knots[i]);

注意:%f 默认读取为 double。如果你通过float,它会先转换为double。

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 2015-03-27
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多