【发布时间】:2018-02-27 00:35:51
【问题描述】:
由于在初始化后无法为 const 赋值,我该如何实现呢?
const double input1[1000][2];
for(int i = 0; i < 1000; i++){
input1[i][0] = i;
input1[i][1] = i*2;
}
【问题讨论】:
-
您为什么要这样做?用户代码可以使用
i代替input1[i][0]和i*2代替input1[i][1],而不是使用input1。 -
如果它是 const,你需要在编译期间使用常量值初始化它。
-
您将一个显然不是
const的数组声明为const,这没有任何意义。如果您希望您的const数组使用值进行初始化,那么您必须以艰难的方式进行const double input1[1000][2] = { {0,1}, {0,2}, {0,3}, ... }; -
如果您使用适当的构建系统,那么您可以使用脚本生成初始化程序。如果数据必须是
const。请注意,const只是一个限定符,你总是可以用它做错事,特别是在c 中。当然const会保护你免于意外做错事,我认为它会帮助编译器优化。但也许不值得。 -
它的目的是作为计算乘法结果的神经网络练习的训练数据(我知道它没用,但它有学习目的)。网络由第三方库编写的带有 const double[][] 参数的函数调用。我是 C 新手,所以我不知道是否还有其他方法可以做到这一点,例如,传递一个非常量 double[][]。感谢您的回复。
标签: c arrays initialization double constants