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中的值,但是我该怎么做?
答案 0 :(得分:2)
问题陈述
exampleStruct-> z =“来自exampleStruct的值,来自exampleStruct的变量x”+“值,变量y”;
可以重写为
“来自exampleStruct的值,变量z”=“来自exampleStruct的值,变量x”+“来自exampleStruct的值,变量y”;
如果您认为可以在exampleStruct->z
内使用foo()
,那么为什么不exampleStruct->x
和exampleStruct->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;
您将结构作为指针。