我有一个问题,我需要处理大双精度数组中的小部分。有没有办法定义一个指针,让我将它作为一个小数组处理?
鉴于:
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] 的元素中(但这只是一个示例。我想做一些更复杂的事情)
实现这一目标的最简单方法是什么?
有没有办法定义一个指针,让我将它作为一个小数组处理?
普通的
double *
就可以了:
double *smallarr = &bigarr[297];
然后您可以像使用
smallarr
一样使用 bigarr
,其中 smallarr[0]
相当于 bigarr[297]
。
你的原创
double *smallarr[10] = &bigarr[297];
是一个指针数组,不是
double
的数组,也不是指向数组的指针。 您可以定义一个指向数组的指针:
double (*smallarr_ptr)[10] = &bigarr[297];
...但是使用它的语法与使用
bigarr
的语法不同。 将子数组长度编码为指针类型并不会带来太多好处,特别是当它是常量时。