Пусть у нас есть эти 2-структура:C член структуры в пределах структуры функционировать
struct date
{
int date;
int month;
int year;
};
struct Employee
{
char ename[20];
int ssn;
float salary;
struct date dateOfBirth;
};
Если я хочу использовать к члену структуры, чтобы отправить его в функцию, скажем, мы имеем эту функцию:
void printBirth(date d){
printf("Born in %d - %d - %d ", d->date, d->month, d->year);
}
я понимаю, если им определение работника и я хочу, чтобы напечатать свою дату рождения, я хотел бы сделать:
Employee emp;
emp = (Employee)(malloc(sizeof(Employee));
emp->dateOfBirth->date = 2; // Normally, im asking the user the value
emp->dateOfBirth->month = 2; // Normally, im asking the user the value
emp->dateOfBirth->year = 1948; // Normally, im asking the user the value
//call to my function :
printBirth(emp->dateOfBirth);
Но когда я делаю это, я получаю сообщение об ошибке: warning: передавая аргумент 1 из 'functionName' (в нашем случае это будет printBirth) из несовместимого типа указателя.
Я знаю, что было бы проще, если бы функция работала с указателем даты структуры, но у меня нет этой опции. Функция должна получать дату структуры как параметры.
Так что я хотел знать, как я могу передать структуру, определенную внутри структуры, функции.
спасибо.
'Employee * emp; emp = (Employee *) (malloc (sizeof (Employee)) emp-> dateOfBirth.date = 2; '... – BLUEPIXY
В зависимости от компилятора вам может потребоваться либо префикс Employee, либо дата с struct like' struct Employee' или использовать typedefs, например 'typedef struct {...} Employee'. – holgac
или' Employee emp = {"", 0, 0.0f, {2,2,1948}}; '..'printBirth (emp. dateOfBirth); ' – BLUEPIXY