我在这个网站上寻找这个问题的答案已经很久了,但似乎仍然无法实现我的目标。没有我要添加的赋值语句,代码可以编译并正常工作。这段代码中的所有内容都是指针这一事实让我很困惑,但我无法改变这一点,它不是我的代码。我基本上只是想覆盖x_array
(仅在 的第一个索引中bs
)的所有值作为存储在y_array
. 这是程序结构:
typedef struct
{
double *x_array;
} b_struct;
typedef struct
{
b_struct *bs;
} a_struct;
void fun_1(a_struct *as);
void allocate_b(b_struct *bs);
void allocate_a(a_struct *as);
int main(void)
{
a_struct *as
as = (a_struct *)malloc(sizeof(a_struct));
allocate_a (as);
fun_1 (as);
// everything internal to sa is deallocated in separate functions
free (as);
return (0);
}
void allocate_a(a_struct *as)
{
int i;
if ((as->bs =(b_struct *)malloc(5*sizeof(b_struct))) == NULL)
{
printf("Error: Not enough memory!\n");
exit(1);
}
for(i=0;i<5;i++) allocate_b (&(as->bs[i]));
return;
}
void allocate_b(b_struct *bs)
{
if ((bs->x_array =(double *)malloc(10*sizeof(double))) == NULL)
{
printf("Error: Not enough memory!\n");
exit(1);
}
return;
}
void fun_1(a_struct *as)
{
int i;
double y_array[10]; // the values i need are read into this array
// the following line is what will not compile
for (i=0; i<10; i++) as->bs[0]->x_array[i]=y_array[i];
return;
}
我尝试了许多添加排列,&
但*()
每次我得到:
error: expression must have pointer type
代码非常长且复杂,我试图解析出与我的具体问题相关的内容。我试图让它成为一个完整的程序,但如果我搞砸了一些语法,我很抱歉。希望这足以理解赋值语句工作需要发生的事情。有人可以解释如何访问这些嵌套指针结构和指针数组的每一层吗?