C和C结构的新手 - 如何将结构作为函数中的参数

Sco*_*S. 1 c parameters struct function

StackOverflow的新手,C的新手.我试图将一个struct作为函数'add_fields'中的一个参数,它将前两个int字段'a'和'b'相加,并将结果放在int字段'c'中.没有得到编译器的任何东西,所以很明显我做错了.我只是不知道是什么.任何帮助,将不胜感激.

    #include <stdio.h>

    struct add{
    int a;
    int b;
    int c;
    }

    void add_fields(struct add *d){
    d->c = a + b;

    }

    main(){

    struct add data;
    data.a = 1;
    data.b = 2;
    data.c = 0;
    add_fields(data);
    printf("%d + %d = %d", data.a, data.b, data.c);
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*iot 9

你很接近,但变量ab在这方面不存在,而你需要通过指针结构来访问字段d:

d->c = d->a + d->b;
Run Code Online (Sandbox Code Playgroud)

其次,add_fields在调用时需要传递对结构的引用(因为需要一个指针)add_fields:

add_fields(&data);
Run Code Online (Sandbox Code Playgroud)

&表明你要传递变量的地址data而不是值.

  • 另外,对`data`的引用需要传递给`add_fields`,而不是`data`本身.`struct`块需要以分号结束. (2认同)