C:将指向数组子集的指针处理为小数组

问题描述 投票:0回答:1

我有一个问题,我需要处理大双精度数组中的小部分。有没有办法定义一个指针,让我将它作为一个小数组处理?

鉴于:

double bigarr[10000] = {0.0};
// doing something to fill the array

double *smallarr[10] = &bigarr[297];

int i;
for (i=0; i<10; i++) {
  *smallarr[i] += 15.0;
}

这个示例应该会导致将 15.0 添加到 bigarr[297]..bigarr[306] 的元素中(但这只是一个示例。我想做一些更复杂的事情)

实现这一目标的最简单方法是什么?

arrays c pointers
1个回答
0
投票

有没有办法定义一个指针,让我将它作为一个小数组处理?

普通的

double *
就可以了:

double *smallarr = &bigarr[297];

然后您可以像使用

smallarr
一样使用
bigarr
,其中
smallarr[0]
相当于
bigarr[297]

你的原创

double *smallarr[10] = &bigarr[297];

是一个指针数组,不是

double
的数组,也不是指向数组的指针。 您可以定义一个指向数组的指针:

double (*smallarr_ptr)[10] =  &bigarr[297];

...但是使用它的语法与使用

bigarr
的语法不同。 将子数组长度编码为指针类型并不会带来太多好处,特别是当它是常量时。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.