表达式必须是指向完整对象类型的指针?

时间:2016-11-29 06:37:00

标签: c arrays

我正在尝试更改结构数组。我的代码如下:

typedef struct {
    char firstName[30];
    char lastName[30];
    char street[35];
    char city[20];
    char state[3];
    int zip;
    char phone[15];
    int accountId;
} Customer;

struct Customer customer_list[];

//void copy_first_name(char data[], int i) {
//  strcpy(customer_list[i].)

//}

int main(void) {

    int _zip, _accountId;
    char _firstName[30], _lastName[30], _street[35], _city[20], _state[3], _phone[15];

    for (int i = 0; i < 10; i++) {

        printf("Enter data for customer %d: \n", i);
        printf("Enter First Last Phone: ");
        scanf("%s%s%s", &_firstName, &_lastName, &_phone);

        printf("\nEnter Address (Street City State ZIP): ");
        scanf("%s%s%s%d", &_street, &_city, &_state, &_zip);

        strcpy(customer_list[i].firstName, _firstName);


    }

    return 0;
}

我在标题中收到错误消息,指的是customer_list。谁能帮我吗?

2 个答案:

答案 0 :(得分:2)

更改

struct Customer customer_list[];

Customer customer_list[10];

或(不推荐,但语法示例)

struct Customer {
    char firstName[30];
    char lastName[30];
    char street[35];
    char city[20];
    char state[3];
    int zip;
    char phone[15];
    int accountId;
} customer_list[];

在您的示例中,Customer是typedef,等于struct { ... }。它不是命名结构。

有些人喜欢这样做,但我不喜欢它:

typedef struct Customer {
    char firstName[30];
    char lastName[30];
    char street[35];
    char city[20];
    char state[3];
    int zip;
    char phone[15];
    int accountId;
} Customer;

Customer customer_list[10];

struct Customer customer_list[10];

如果他们这样做会更好:

typedef struct Customer_s {
    char firstName[30];
    char lastName[30];
    char street[35];
    char city[20];
    char state[3];
    int zip;
    char phone[15];
    int accountId;
} Customer;

现在很明显CustomerCustomer_s之间存在差异。

Customer customer_list[10];

struct Customer_s customer_list[10];

答案 1 :(得分:0)

[typedef][1]中有struct,因此声明不需要struct个关键字 简单地

Customer customer_list[10];

就够了。

或删除typedef并声明struct这样..

struct Customer {
    char firstName[30];
    char lastName[30];
    char street[35];
    char city[20];
    char state[3];
    int zip;
    char phone[15];
    int accountId;
} ;

struct Customer customer_list[10];