【发布时间】:2013-09-24 15:38:54
【问题描述】:
我在这里定义了一个结构
typedef struct {
char name[10];
int idBadge;
} Employee;
我想使用这个函数调用来填充这个结构的一个实例:
void EmployeeCall (char *name, int badgeNumber, Employee *E){
E = (Employee *)malloc(sizeof(Employee));
strcpy(E->name,name);
E->idBadge = badgeNumber;
}
然后,我想使用这样的调用来检索给定的信息:
int EmployeeBadge (Employee E){
return(E.idBadge);
}
我从下面的 Main 调用这些函数:
int main(void){
Employee a;
int badgeNumber;
int badgeNumberA = 1028;
char *namePtrA = "Fred";
EmployeeCall( namePtrA, badgeNumberA, &a );
badgeNumber = EmployeeBadge(a);
printf("%d\n",badgeNumber);
return 0;
}
当我调用它们时,它们都可以正确编译,但是 EmployeeBadge 的返回值不正确。它返回 int,就好像没有任何东西放入结构中一样; 徽章编号 = 32767
如何创建一个可以通过值和引用传递的结构变量?我是否需要另一个作为指针的 Employee 变量并将 Employee a 分配给它以用于 EmployeeCall 函数?
【问题讨论】:
-
` E = (Employee *)malloc(sizeof(Student));`???
-
您可以取消引用
*e为int i = employeeBadge(*e);如果声明为静态,我敢打赌编译器会优化掉不需要的部分——即使static int employeeBadge(Employee *E) { return E->badgeID; }至少是同样好的解决方案。
标签: c pointers data-structures struct function-pointers