0
讓我們說我們有那些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);
}
我的理解是,如果IM定義一個員工,我想打印他的出生日期,我會做:
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)。
我知道,如果該函數可以與結構日期的指針一起工作,但我沒有這個選項會更容易。該函數必須接收結構日期作爲參數。
所以我想知道我是如何將結構中定義的結構傳遞給函數的。
非常感謝。
'Employee * emp; emp =(Employee *)(malloc(sizeof(Employee)); emp-> dateOfBirth.date = 2;'... – BLUEPIXY 2015-04-04 21:38:21
根據編譯器的不同, struct Employee'或使用類型定義,如'typedef struct {...} Employee'。 – holgac 2015-04-04 21:38:48
或'Employee emp = {「」,0,0.0f,{2,2,1948}};'''printBirth(emp。 ' – BLUEPIXY 2015-04-04 21:41:21