所以我目前正在阅读和学习来自互联网的代码(与人工神经网络相关),我发现了部分代码,我不明白它为什么有效。
double* inputNeurons;
double* hiddenNeurons;
double* outputNeurons;
这是声明的方式。然后在接下来的代码中,它被更改并用作数组?
inputNeurons = new( double[in + 1] );
for ( int i=0; i < in; i++ ) inputNeurons[i] = 0;
inputNeurons[in] = -1; // 'in' is declared in the function as an int
所以,我想了解它为何以及如何运作。它变成了“ double ”的数组吗?如果是这样,我还可以通过什么方式使用它?这可以用于结构甚至类吗?
最佳答案
每个数组都可以视为一个指针。但这并不意味着每个指针都是一个数组。不要混淆!
假设我们有一个数组int test[..]
,变量名也代表了数组在内存中存放的地址。所以你可以写
int * p = test;
在那一刻,我的指针p
“变成”了一个数组,这里“变成”的意思是“指向一个数组”。你的例子是相似的 - 唯一的区别是内存是动态分配的(堆)而不是在堆栈上(如我的例子)。
那么元素是如何访问的呢? 比方说,我们想要获取第一个元素(索引 0)。 我们可以说
int i = test[0];
或者我们可以说
int i = *p;
现在我们要获取索引为 1 的元素:
int i = test[1];
或者 - 通过使用指针算法我们可以写
int i = *(p + 1);
关于c++ - 明白这个 double 如何变成数组了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414791/