如何将结构简称的变量地址传递给函数

时间:2019-06-27 17:47:07

标签: c function variables struct memory-address

如何将结构简称(color)的可变地址传递给函数(fun)的参数。

#include <stdio.h>

void fun();

struct figure {
    char name[30];
    float field;
} color;

int main(void) {
    fun();  
    return 0;
}

2 个答案:

答案 0 :(得分:3)

  

如何传递结构简称的可变地址

要传递地址,您只需要&color

然后该函数需要接受指针以构造图形

它看起来像:

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


struct figure{
    char name[30];
    float field;
} color;

void fun(struct figure *);  // Function takes pointer to struct figure

int main(void){

    strcpy(color.name, "Joe"); // Initialize color
    color.field = 42.0;

    fun(&color);               // Pass address of color

    return 0;
}

void fun(struct figure *c)
{
    printf("%s\n", c->name);  // Access color using the passed pointer
    printf("%f\n", c->field);
}

输出:

Joe
42.000000

答案 1 :(得分:0)

struct figure { ... };只会引入一个名为struct figure的新类型,而struct figure { ... } color;做两件事(1)引入上述类型,并且(2)定义一个名为color的变量这种类型的。

要将类型struct figure的对象传递给函数,请写...

struct figure{
    char name[30];
    float field;
} color;


void fun(struct figure f) {
    printf("%s %f\n", f.name, f.field);
}

int main(void){
    struct figure myObj;
    strcpy(myObj.name, "Hello!");
    myObj.field = 1.0;

    fun(myObj);  

    return 0;
}

您还可以传递此类对象的地址,这将允许函数也更改最初传递的对象:

void fun(struct figure *f) {
    f->field = 2.0
    printf("%s %f\n", f->name, f->field);
}

int main() {
    ...
    fun(&myObj);