使用依赖于struct中的值的函数更新struct值

时间:2015-03-17 11:46:12

标签: c pointers struct

typedef struct example_Type{
    int x;
    int y;
    int z;
} exampleType;

void foo(exampleType* exampleStruct){
    exampleStruct->z = "value from exampleStruct, variable x" + "value from exampleStruct, variable y";

}

int main(){
    exampleType struct1;
    struct1.x = 10;
    struct2.y = 5;
    foo(&struct1);
}

我应该怎么做?

exampleStruct->z = exampleStruct.y + exampleStruct.x;  

这会有用吗?我想调用x和y中的值,但是我该怎么做?

4 个答案:

答案 0 :(得分:2)

问题陈述

  

exampleStruct-> z =“来自exampleStruct的值,来自exampleStruct的变量x”+“值,变量y”;

可以重写为

  

“来自exampleStruct的值,变量z”=“来自exampleStruct的值,变量x”+“来自exampleStruct的值,变量y”;

如果您认为可以在exampleStruct->z内使用foo(),那么为什么不exampleStruct->xexampleStruct->y?它们是同一结构变量的成员。它肯定会起作用。试着写

exampleStruct->z = exampleStruct->x + exampleStruct->y; 

答案 1 :(得分:1)

使用

exampleStruct->z = exampleStruct->y + exampleStruct->x; 

而不是

exampleStruct->z = exampleStruct.y + exampleStruct.x; 

->运算符取消引用其左操作数,然后访问一个 引用对象的成员。因此,上述陈述与执行

相同
(*exampleStruct).z = (*exampleStruct).y + (*exampleStruct).x; 

答案 2 :(得分:0)

是的,你可以这样做:

exampleStruct->z = exampleStruct->y+exampleStruct->x;

注意:您正在使用指针,因此,在访问元素时,将使用->代替.


type_name x;

创建type_name

类型的变量
type_name *y;

type_name类型的变量创建指针


在使用struct时,您需要使用指针进行此操作:

struct smth *test;

test->a=0;
strncpy(test->word,"hello",5);

当你使用普通结构(没有指针)时,你会这样做:

struct smth test;

test.a=0;
strncpy(test.word,"hello",5);

答案 3 :(得分:0)

你可以,

exampleStruct->z = exampleStruct->x + exampleStruct->y;

您将结构作为指针。