gpt4 book ai didi

c - C中的数组索引,它必须是整数吗?它可以是一个 float 吗?

转载 作者:行者123 更新时间:2023-12-01 14:59:11 26 4
gpt4 key购买 nike

如标题所示...我需要使用 float 作为数组索引,但 GCC 编译器报错了。

基本上我有一个数学函数 F(x,t),其中函数有变量 x 和 t。我遇到的问题是我试图在 float 类型中递增 x 和 t,这样我就可以在不同的 x 和 t 处计算函数的不同值。所以我自然会有两个 for 循环:

for (x = x_min; x < x_max; x += dx) {
for (t = t_min; t < t_min; t += dt) {
f[x][t] = 10*x + 10*t; // Over simplified.. but you get the idea
}
}

// And then perform some fourier transform
fft(f[x][t], 256, 1);

是的,这就是为什么我想知道是否有可能将 float 作为数组索引。

最佳答案

是的,它必须是一个整数,因为您本质上是在执行指针运算,其中 &array[0] 是指向数组开头的指针(好吧,技术上 必须是 一个整数,因为这是规范所说的,但这就是原因)。

在这种情况下,从基指针向上移动对象大小的一部分是没有意义的。您几乎可以保证不会指向元素的开头。

这样看:

int array[10] = { 0 };

// analagous to *(array + 5), where '5' is
// offsetting the pointer by sizeof(int) * 5 bytes
// If you were able to add 5.5 to the base address
// the value assigned to 'i' below would be interpreted as
// the four bytes following *(array + 5.5), i.e., garbage data.
int i = array[5];

因为一开始我觉得这是一个奇怪的问题,也许您可​​以向我们提供更多关于您实际想要完成的事情的信息,而不是您提出的解决方案?在这种情况下,我们可能会为您提供更有帮助的答案。

关于c - C中的数组索引,它必须是整数吗?它可以是一个 float 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com