【发布时间】:2019-04-02 21:26:26
【问题描述】:
我正在设置一个定义多项式的结构,即它包含两个变量:
-int degree 包含多项式的度数
-int * coeff = (int*) malloc (degree * sizeof(int)) 保存所有系数
我还定义了一个函数new_polynome(),它接受一个度数并返回一个指向一个结构的指针,该结构体保存该度数的多项式,其所有系数都设置为1;
#include <stdio.h>
#include <stdlib.h>
// 1
typedef struct
{
int degree;
int * coeff = (int *) malloc (degree * sizeof(int));
} polynome;
// 2
polynome * new_polynome(int n)
{
polynome * newest_polynome = (polynome *) malloc (sizeof(polynome));
for(int i = 0; i < n; i++)
newest_polynome->coeff[i] = 1;
return newest_polynome;
}
int main(void)
{
polynome * new_polynome = (polynome *) malloc (sizeof(polynome));
new_polynome = new_polynome(5);
for(int i = 0; i < 5; i++)
printf("%d", new_polynome->coeff[i]);
free(new_polynome->coeff);
return 0;
}
但是,当我尝试打印其系数时,出现以下错误。有没有正确的方法来做到这一点?我不明白错误信息。 如何打印它的系数?
我的错误如下:TD_polynomes.c:9:17: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
int * coeff = (int *) malloc (degree * sizeof(int));
^
TD_polynomes.c: In function ‘new_polynome’:
TD_polynomes.c:19:24: error: ‘polynome {aka struct <anonymous>}’ has no member named ‘coeff’
newest_polynome->coeff[i] = 1;
^~
TD_polynomes.c: In function ‘main’:
TD_polynomes.c:27:20: error: called object ‘new_polynome’ is not a function or function pointer
new_polynome = new_polynome(5);
^~~~~~~~~~~~
TD_polynomes.c:26:16: note: declared here
polynome * new_polynome = (polynome *) malloc (sizeof(polynome));
^~~~~~~~~~~~
TD_polynomes.c:30:34: error: ‘polynome {aka struct <anonymous>}’ has no member named ‘coeff’
printf("%d", new_polynome->coeff[i]);
^~
TD_polynomes.c:32:22: error: ‘polynome {aka struct <anonymous>}’ has no member named ‘coeff’
free(new_polynome->coeff);
^~
【问题讨论】:
-
不能在结构的定义中初始化成员。
coeff应该在new_polynome中初始化。此代码为两个polynome分配内存并丢弃第一个。new_polynome变量屏蔽了同名函数。