加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 了解这个double如何成为一个数组?

发布时间:2020-12-16 09:59:01 所属栏目:百科 来源:网络整理
导读:所以我目前正在阅读和学习来自互联网的代码(与人工神经网络相关),我发现了一部分代码,我不明白它为何起作用. double* inputNeurons;double* hiddenNeurons;double* outputNeurons; 这是它的宣布方式.然后在下一个代码中,它被更改并用作数组? inputNeurons =
所以我目前正在阅读和学习来自互联网的代码(与人工神经网络相关),我发现了一部分代码,我不明白它为何起作用.

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

所以,我想了解它为什么以及如何运作.它成了一个“双打”阵列吗?如果是这样,我还能以什么方式使用它?这可以用于结构甚至类吗?

解决方法

每个数组都可以视为指针.但这并不意味着每个指针都是一个数组.不要混淆了!

假设我们有一个数组int test [..],变量名也表示数组存储在内存中的地址.所以你可以写

int * p = test;

那时我的指针p“变成”一个数组,其中“变成”意味着“指向一个数组”.您的示例类似 – 唯一的区别是内存是动态分配的(堆)而不是堆栈(如我的示例中所示).

那么元素是如何被访问的?
让我们说,我们想得到第一个元素(索引0).
我们可以说

int i = test[0];

或者我们可以说

int i = *p;

现在我们想要获得索引1处的元素:

int i = test[1];

或者 – 通过使用指针算术,我们可以写

int i = *(p + 1);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读