是什么导致了 C 中的点到对象错误?

What is causing this Point-to-Object Error in C?

所以我定义了

#define SYS_LEN 50.0
#define N_CELLS ((int)SYS_LEN)

以及

extern double *array_one

我通过

填充
array_one[0] = 0.5*SYS_LEN
array_one[1] = 0.25*SYS_LEN

然后我继续定义函数

void function(void)
{
int is, ix;
double X;
for (is = 0; is < MAX_VALUE; is++){
    for (ix = 0; ix < MAX_VALUE_TWO; ix++)
    {
    X[is] = 0.5 + (double)ix - array_one[is]
    }
}}

但是我收到一条错误消息 'expression must have pointer-to-object type'。不太清楚这是为什么,任何帮助将不胜感激

谢谢

可能存在多个问题。

潜在问题一是你说你为

分配了内存
extern double *array_one

并分配了两个值。但是您是否为 array_one 声明了足够的内存并使用值进行初始化,以说明函数中的最大循环索引,即 MAX_VALUE ?否则,如果您没有分配足够的内存,您将遇到访问冲突。

问题二是确定的 - 它是您用双 X 声明了一个双标量,但试图访问它,就好像您声明了一个数组一样。

假设您已将 MAX_VALUE 定义为大于 1 的整数,解决方案是为 X:

声明一个双精度数组

例如,如果你完成了某个地方

#define MAX_VALUE 20

相应的代码需要是

void function(void)
{
int is, ix;
double X[MAX_VALUE];
for (is = 0; is < MAX_VALUE; is++){
    for (ix = 0; ix < MAX_VALUE_TWO; ix++)
    {
    X[is] = 0.5 + (double)ix - array_one[is];
    }
 }
}