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);