gpt4 book ai didi

结构体中的 C 结构体成员函数

转载 作者:行者123 更新时间:2023-11-30 17:17:16 34 4
gpt4 key购买 nike

假设我们有这 2 个结构:

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

但是当我这样做时,我收到一个错误:警告:从不兼容的指针类型传递“functionName”的参数 1(在我们的例子中为 printBirth)。

我知道如果该函数可以使用结构日期指针,那么会更容易,但我没有这个选项。该函数必须接收结构体日期作为参数。

所以我想知道如何将结构中定义的结构传递给函数。

非常感谢。

最佳答案

试试这个代码

#include <stdio.h>

typedef struct
{
int date;
int month;
int year;
} date;

typedef struct
{
char ename[20];
int ssn;
float salary;
date dateOfBirth;
} Employee;

void printBirth(date *d){
printf("Born in %d - %d - %d \n", d->date, d->month, d->year);
}

int main ()
{
Employee emp;

emp.dateOfBirth.date = 2;
emp.dateOfBirth.month = 2;
emp.dateOfBirth.year = 1948;

printBirth(&emp.dateOfBirth);
}

我想建议您在使用结构时使用typedef。如果您使用 typedef,您不再需要在各处编写 struct,因为使用 typedef 代码更干净,因为它提供了更多的抽象

关于结构体中的 C 结构体成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451599/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com