我正在尝试通过使用指针来修改作为参数传递的结构,但是我无法使其工作。我不能只返回结构,因为该函数必须返回一个整数。如何修改函数中的结构?这就是我到目前为止所做的:
typedef enum {TYPE1, TYPE2, TYPE3} types;
typedef struct {
types type;
int act_quantity;
int reorder_threshold;
char note[100];
}elem;
int update_article(elem *article, int sold)
{
if(*article.act_quantity >= sold)
{
article.act_quantity = article.act_quantity - sold;
if(article.act_quantity < article.act_quantity)
{
strcpy(article.note, "to reorder");
return -1;
}
else
return 0;
}
else if(article.act_quantity < venduto)
{
strcpy(*article.note, "act_quantity insufficient");
return -2;
}
}
我收到此错误:“错误:请求成员:'act_quantity'在某些结构或联合'中,在我试图修改结构的所有行中。
编辑:我用过“。”而不是“ - &gt;”。我现在修好了。它仍然给我一个错误:“一元'*'的无效类型参数(有'int')”答案 0 :(得分:9)
*article.act_quantity
被解释为*(article.act_quantity)
它应该是(*article).act_quantity
或article->act_quantity
(当LHS是指针时)
答案 1 :(得分:5)
当您引用指向结构的指针时,您需要
article->act_quantity
或
(*article).act_quantity
答案 2 :(得分:2)
将*article.act_quantity
更改为(*article).act_quantity
,或更好地更改为article->act_quantity
等。运营商优先权可让您到达此处......
答案 3 :(得分:1)
处理指针时应该是ptr->member
,而不是ptr.member
。
答案 4 :(得分:1)
这应解决问题
int update_article(elem *article, int sold)
{
if(article->act_quantity >= sold)
{
article->act_quantity = article->act_quantity - sold;
if(article->act_quantity < article->reorder_threshold)
{
strcpy(article->note, "to reorder");
return -1;
}
else
return 0;
}
else if(article->act_quantity < sold)
{
strcpy( article->note, "act_quantity insufficient");
return -2;
}
}
答案 5 :(得分:0)
您不必返回指向结构的指针,因为它仍将与输入保持相同。您将地址传递给函数,并使用此地址处的某些内容。在这种情况下,无需返回与结构相关的任何内容
article
是指针,因此您不能只使用article.act_quantity
,而应将.
替换为->
article->act_quantity
答案 6 :(得分:0)
使用箭头操作符使用结构指针访问结构的成员。但有效的记忆必须存在。
答案 7 :(得分:0)
此:
strcpy(*article.note, "act_quantity insufficient");
不起作用,note
是一个字符数组,你不能将它去除它。你需要:
strcpy(article->note, "act_quantity insufficient");
答案 8 :(得分:0)
因为您写的是*article->act_quantity
而不是article->act_quantity
。修复它