函数返回结构时出错

时间:2011-10-20 18:18:46

标签: c struct structure

这就是我想要做的事情:

我一直致力于创建一个结构的代码(在main中硬编码)然后我想要两个结构的malloc空间(试着使用函数)。然后将第一个结构中的所有数据复制到第二个结构中并打印新结构。

发生的错误是: 我不明白这个错误意味着什么。

pointer.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
pointer.c:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token



#include <stdio.h>
#include <stdlib.h>
#include "pointer.h"
int rec = 0;

第7行

struct emp *create(int record){
emp *new_employees = malloc(sizeof(info) * (record+1));

return new_employees;   
}

第13行

struct emp *copy(emp *data, int record){
emp *new_employee = create(record+1);
int i;
for(i = 0; i<record;i++){
    new_employee.first = data.first;
    new_employee.last = data.last;
    new_employee.start_date = data.start_date;
    new_employess.sal = data.sal;
    data++;
}
return new_employee;
}


int main(void){
struct info employees;
employees.first = "FIRST";
employees.last = "LAST";
employees.start_date = "June-20th-2006";
employees.sal = 55555.55;
rec = rec+1;



}

头文件:

#include <string.h>
struct info {
char *first;
char *last;
char *start_date;
float sal;
} emp;

4 个答案:

答案 0 :(得分:2)

info不是类型,emp只是struct info类型的变量。添加typedef(如果您想要emp作为类型):

typedef struct info {
    char *first;
    char *last;
    char *start_date;
    float sal;
} emp;

...或添加struct关键字。

struct info *create(int record);
struct info *copy(emp *data, int record);

答案 1 :(得分:0)

emp是变量,info是类型。因此,您应该在函数原型和正文中使用info而不是emp

与其他人说的一样,typedef缺失或struct info而不是emp。我错过了那个:))

恕我直言,这些是您代码中的两个明显错误。

答案 2 :(得分:0)

emp *new_employees = malloc(sizeof(info) * (record+1));

类型名称为struct info,而非info

但是写一个更好的方法是:

emp * new_employees = malloc((记录+ 1)* sizeof * emp);

答案 3 :(得分:0)

您必须定义如下函数:

struct emp *create()
struct emp *copy()

或者使用typedef将结构定义为数据类型。