访问C - 函数中的结构

时间:2016-11-21 04:27:21

标签: c struct structure

我正在尝试使用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的值?

3 个答案:

答案 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的每个成员