据我所知,如果结构内的项目是指针,则使用 调用它->
,如果是正常值,则使用.
。
这是我的typedef:
typedef struct
{
char name[50];
int quantity;
}ing;
typedef struct
{
char name[50];
ing *n;
int price, n_ing, max_producity;
}prod;
然后我声明 aprod a;
并分配a->n=malloc(n*sizeof(ing));
。但是当我尝试访问a.n->name
它时,我会出错。
所有 4 种组合都给我错误“错误:'->' 的无效类型参数(有'prod'(或'ing'))”或“错误:下标值既不是数组也不是指针也不是向量”。
为什么?
int ret_max_producity(prod a, ing n, int dim_n)
{
int max_prod=32100, i;
for(i=0; i<a.n_ing; i++)
{
/* here!->*/if((n[find_ing(n, a.n[i]->name, dim_n)].quantity)/(a.n->quantity)<max_prod)
{
/* here!->*/ max_prod=(n[find_ing(n ,a.n[i]->name, dim_n)].quantity/a.n->quantity);
}
}
if(max_prod==32100)
{
printf("ERROR WHILE FINDING MAX PRODUCITY FOR PRODUCT %s, ABORTING", a.name);
system("pause");
exit(EXIT_FAILURE);
}
return max_prod;
}
int find_ing(ing v, char *s, int dim)
{
int i;
for(i=0; i<dim; i++)
{
if(strcmp(s, v.name)==0)
{
return i;
}
}
printf("\n\nERROR WHILE FINDING INGREDIENT %s IN VECTOR, ABORTING...", s);
system("pause");
exit(EXIT_FAILURE);
}