如何将结构简称(color
)的可变地址传递给函数(fun
)的参数。
#include <stdio.h>
void fun();
struct figure {
char name[30];
float field;
} color;
int main(void) {
fun();
return 0;
}
答案 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);