C 使用依赖于结构中的值的函数更新结构值

C 使用依赖于结构中的值的函数更新结构值,c,pointers,struct,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(){ e

我该怎么做

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);
}
这样行吗?我想调用在x和y中找到的值,但是我该如何做呢?

使用

exampleStruct->z = exampleStruct.y + exampleStruct.x;  
而不是

exampleStruct->z = exampleStruct->y + exampleStruct->x; 
->
运算符取消对其左操作数的引用,然后访问一个操作数 引用对象的成员的。因此,上述声明与我们所做的相同

exampleStruct->z = exampleStruct.y + exampleStruct.x; 
是的,您可以这样做:

(*exampleStruct).z = (*exampleStruct).y + (*exampleStruct).x; 
注意:您使用的是指针,因此在访问元素时将使用
->
而不是


创建类型为
type\u name

type_name x;
创建指向
类型\u name
的变量的指针


使用
struct
s时,您需要对指针执行以下操作:

type_name *y;
当您使用普通结构(无指针)时,您可以:

问题陈述

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

可以重写为

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

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

struct smth test;

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

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

你得到的是一个指针结构。

究竟什么是
examplestuct->z=“examplestuct的值,变量x”+“examplestuct的值,变量y”
z
是一个
int
而不是
char*
@CoolGuy。不需要编辑第一个单词,IMHO.:-p这个答案是一个很好的例子,说明了一个新手问题的好答案是如何精心设计的!你会成为一个好老师…:-)@谢谢你的夸奖,先生。:-)@苏拉夫·戈什,非常感谢!很抱歉,我通过我的教授找到了答案,并且没有经常使用stackexchange。你的回答确实帮助我理解使用指针的逻辑,因此我非常感谢你的回答:)
struct smth test;

test.a=0;
strncpy(test.word,"hello",5);
exampleStruct->z = exampleStruct->x + exampleStruct->y; 
exampleStruct->z = exampleStruct->x + exampleStruct->y;