c - 将结构体成员传递给 C 中的函数

标签 c function struct

我正在尝试使用结构中的成员之一将其传递给计算函数()。该函数将为我的变量计算一个新值。你能告诉我我必须做什么才能将变量传递到我的主函数中吗?我还什么保留我的三个功能。谢谢

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

我的原型(prototype):

void calculations_using_struct_values(int i);

我的结构:

struct test
{
    int x,y,z;
};

我的主要内容:

int main()
{
    calculations_using_struct_values();
    return 0;
}

初始化变量的值:

void struct_values()
{
    test variable;

    variable.x=50;
    variable.y=100;
    variable.z=150;

    calculations_using_struct_values(variable.x);
    return;
}

我将变量.x 存储到 i 中,以便该函数将其加 5:

void calculations_using_struct_values(int i)
{
    int a=5;
    i += a;
    printf("%d\n",i);
    return;
}

最佳答案

您的函数可以采用指向 int 的指针。

void calculations_using_struct_values(int *i)
{
    int a=5;
    *i += a;
}

并将结构体成员的地址传递给函数 (&):

void struct_values()
{
    //as before

    calculations_using_struct_values(&variable.x);
}

参见:Passing by reference in C

或者,如果需要,您可以传递整个结构:

void calculations_using_struct_values(struct test *s)
{
    int a=5;
    s->x += a;
}

并将结构体的地址传递给函数 (&):

void struct_values()
{
    //as before

    calculations_using_struct_values(&variable);
}

关于c - 将结构体成员传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35892232/

相关文章:

objective-c - Objective-C 中的空指针解引用是未定义的行为吗?

c - c中 "(void) ( { CODE } )"的目的是什么?

r - R : cannot open file 'specdata/001.csv' : No such file or directory [duplicate]

javascript - 为什么我的 window.setInterval 函数在多次调用时会在 DOM 中重叠?

ios - 在结构中获取与另一个关联的值的快捷方式

c - 如何访问结构体中的结构体指针?

c - 我缺少什么,所以我可以编译我的源代码?我是新手

C 程序 : Reading from file and copying to a struct?

javascript - 函数只返回第一个值

c - 使用结构数组在 C 中进行选择排序,错误 : "lvalue required..."