c++ - 明白这个 double 如何变成数组了吗?

标签 c++ arrays

所以我目前正在阅读和学习来自互联网的代码(与人工神经网络相关),我发现了部分代码,我不明白它为什么有效。

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/

相关文章:

c++ - 是否可以在 Mountain Lion 上的当前 Xcode 4.6.1 工具链中启用 _LIBCPP_DEBUG2?

c++ - 以下 C++ 代码有什么问题(关于 shared_ptr)

c++ - 使用 map<int, Foo> 而不是 vector<Foo> 来避免指针失效

c - 在 C 中使用 pthreads 在一维数组中查找最大值的有效方法

arrays - SSJS 从数组中删除项目

c++ - 这是变量声明的简写吗?

c++ - 成员函数的模板和指针

javascript - 如何获得两个JS对象的差异

c++ - 反转数组时遇到问题

php - 通过ajax将多个数组传递给javascript