是什么导致了 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];
}
}
}
所以我定义了
#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];
}
}
}