Как передать структуры функции? это то же самое, что и переменные (т. е. &var1
, чтобы передать его, и *ptr_to_var
из функции).Прохождение структур к функциям
Пусть в следующем коде я хотел отправить agencies[i].emps[j].SB
и agencies[i].emps[j].ANC
функции, которая делает некоторые вычисления на них, а затем возвращает значение и сохранить его в agencies[i].emps[j].SNET
как я могу идти об этом?
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char mat[20];
double SB;
int ANC;
double RCNSS;
double SNET;
} employee;
typedef struct {
char name[20];
employee* emps;
int emps_count;
} agency;
int main(void)
{
int num_ag, num_emps, i, j;
printf("enter number of agencies\n");
scanf("%d", &num_ag);
agency* agencies = malloc(sizeof(agency) * num_ag);
for (i = 0; i < num_ag; i++) {
sprintf(agencies[i].name, "agency %d", i+1);
printf("enter num of employees for agency %d\n", i+1);
scanf("%d", &num_emps);
agencies[i].emps = malloc(sizeof(employee) * num_emps);
agencies[i].emps_count = num_emps;
for (j = 0; j < num_emps; ++j) {
scanf("%s", &agencies[i].emps[j].mat);
}
}
for (i = 0; i < num_ag; i++) {
printf("agency name: %s\n", agencies[i].name);
printf("num of employees: %d\n", agencies[i].emps_count);
}
for (i = 0; i < num_ag; ++i) {
free(agencies[i].emps);
}
free(agencies);
return 0;
}
просто передать указатель на функцию. – HuStmpHrrr
Я рекомендую передать указатель на структуру и изменить ее непосредственно в функции. – LeatherFace
Возможный дубликат [Пропускающая структура как указатель] (http://stackoverflow.com/questions/7567841/passing-structure-as-pointer) – Coconop