我正在尝试使用C语言中的结构,我现在陷入困境。这是我的代码:
#include <stdio.h>
void Test(void);
void updateIt(struct Item* ptr);
struct Item
{
double value;
int unitno;
int isTa;
int quant;
int minQuant;
char name[21];
};
int main(void)
{
Test(); // here I am gonna call updateit() function and print
}
void Test(void) {
struct Item I = { 100.10,100,10,110,10,"NAME!" };
updateIt(&I);
}
void updateIt(struct Item* ptr){
struct Item I[0] = 200 // This doesn't work — but why?
}
如何通过访问Item I = { 100.10,100,10,110,10,"NAME!" }
函数中的值来更新{ 200.20,200,20,220,20,"NAME2!"}
到updateIt
的值?
答案 0 :(得分:1)
updateIt(struct Item* ptr)
接受类型为item的指针ptr
;要使用指针访问结构Item的字段,应使用->
运算符,如下所示:
void updateIt(struct Item* ptr){
ptr->value = 200.20;
ptr->unitno = 200;
ptr->isTa = 20;
ptr->quant = 220;
ptr->minQuant = 20;
strcpy(ptr->name, "NAME2");
}
答案 1 :(得分:1)
在代码段中:
void updateIt(struct Item* ptr){
struct Item I[0] = 200 // This doesn't work — but why?
}
此范围内没有变量I
。
由于您在上述函数中通过updateIt(&I);
传递了结构的地址,因此您必须使用指向它的指针。
函数参数中的指针变量ptr
具有结构的地址,可用于将值更新为:
ptr->structureMember
其中structureMember是结构的任何成员。
答案 2 :(得分:0)
您必须使用像
这样的ptr值ptr-&gt; unitno = 200,因此对于struct的每个成员