C 数组初始化时出错

C 数组初始化时出错,c,C,我试图初始化一个数组,用struct填充它,语法对我来说似乎是正确的,但我使用的IDE不断给出这个错误:“[error]在']'标记之前应该有一个表达式”。 这是我的代码: void caricaRegioni (Regione regioni[]){ Regione abruzzo = {"Abruzzo", 65, "L'Aquila","Marco","Marsilio"}; Regione basilicata = {"Basilicata", 77, "Pote

我试图初始化一个数组,用struct填充它,语法对我来说似乎是正确的,但我使用的IDE不断给出这个错误:
“[error]在']'标记之前应该有一个表达式”。
这是我的代码:

    void caricaRegioni (Regione regioni[]){
    Regione abruzzo = {"Abruzzo", 65, "L'Aquila","Marco","Marsilio"};
    Regione basilicata = {"Basilicata", 77, "Potenza", "Vito", "Bardi"};
    Regione calabria = {"Calabria", 78,"Catanzaro","Jole", "Santelli" };
    Regione campania = {"Campania", 72, "Napoli", "Vincenzo", "De Luca"};
    Regione emilia = {"Emilia-Romagna", 45, "Bologna" "Stefano", "Bonaccini"};
    Regione friuli = {"Friuli-Venezia Giulia", 36, "Trieste", "Massimiliano", "Fedriga"};
    Regione lazio = {"Lazio", 62, "Roma", "Nicola", "Zingaretti"};
    Regione liguria = {"Liguria", 42,"Genova", "Giovanni", "Toti"};
    Regione lombardia = {"Lombardia", 25, "Milano", "Attilio", "Fontana"};
    Regione marche = {"Marche", 57, "Ancona", "Luca", "Ceriscioli"};
    Regione molise = {"Molise", 67, "Campobasso", "Donato", "Toma"};
    Regione piemonte = {"Piemonte", 21,"Torino", "Alberto", "Cirio"};
    Regione puglia = {"Puglia", 75, "Bari", "Michele", "Emiliano"};
    Regione sardegna = {"Sardegna", 88, "Cagliari", "Christian", "Solinas"};
    Regione sicilia = {"Sicilia", 82, "Palermo","Nello","Musumeci"};
    Regione toscana = {"Toscana", 52, "Firenze", "Enrico", "Rossi"};
    Regione trentino = {"Trentino-Alto Adige", 32, "Trento", "Arno", "Kompatscher" };
    Regione umbria = {"Umbria", 55, "Perugia", "Donatella", "Tesei"};
    Regione valle = {"Valle d'Aosta", 23, "Aosta", "Renzo", "Testolin"};
    Regione veneto = {"Veneto", 34, "Venezia", "Luca", "Zaia"};
    regioni[] = {abruzzo,basilicata,calabria,campania,emilia,friuli,lazio,liguria,lombardia,marche,
                    molise,piemonte,puglia,sardegna,sicilia,toscana,trentino,umbria,valle,veneto};
}

感谢您的帮助。

问题是,您不能像这里那样将现有数组重新分配给新内容。有几种方法可以解决这个问题,但这里有两种可能的解决方案:

在第一种方法中,由于您已经知道要保存多少个区域,因此只需访问数组的现有索引,然后将每个索引分别重新分配给新的
Regione
结构。
注意:这比第二种方法快,因为每个元素只访问一次并重新分配

void caricaRegioni (Regione regioni[20]) {
    regioni[0] = (Regione){"Abruzzo", 65, "L'Aquila","Marco","Marsilio"};
    regioni[1] = (Regione){"Basilicata", 77, "Potenza", "Vito", "Bardi"};
    regioni[2] = (Regione){"Calabria", 78,"Catanzaro","Jole", "Santelli" };
    regioni[3] = (Regione){"Campania", 72, "Napoli", "Vincenzo", "De Luca"};
    regioni[4] = (Regione){"Emilia-Romagna", 45, "Bologna" "Stefano", "Bonaccini"};
    regioni[5] = (Regione){"Friuli-Venezia Giulia", 36, "Trieste", "Massimiliano", "Fedriga"};
    regioni[6] = (Regione){"Lazio", 62, "Roma", "Nicola", "Zingaretti"};
    regioni[7] = (Regione){"Liguria", 42,"Genova", "Giovanni", "Toti"};
    regioni[8] = (Regione){"Lombardia", 25, "Milano", "Attilio", "Fontana"};
    regioni[9] = (Regione){"Marche", 57, "Ancona", "Luca", "Ceriscioli"};
    regioni[10] = (Regione){"Molise", 67, "Campobasso", "Donato", "Toma"};
    regioni[11] = (Regione){"Piemonte", 21,"Torino", "Alberto", "Cirio"};
    regioni[12] = (Regione){"Puglia", 75, "Bari", "Michele", "Emiliano"};
    regioni[13] = (Regione){"Sardegna", 88, "Cagliari", "Christian", "Solinas"};
    regioni[14] = (Regione){"Sicilia", 82, "Palermo","Nello","Musumeci"};
    regioni[15] = (Regione){"Toscana", 52, "Firenze", "Enrico", "Rossi"};
    regioni[16] = (Regione){"Trentino-Alto Adige", 32, "Trento", "Arno", "Kompatscher" };
    regioni[17] = (Regione){"Umbria", 55, "Perugia", "Donatella", "Tesei"};
    regioni[18] = (Regione){"Valle d'Aosta", 23, "Aosta", "Renzo", "Testolin"};
    regioni[19] = (Regione){"Veneto", 34, "Venezia", "Luca", "Zaia"};
}
在第二个阵列中,您可能希望像以前一样创建一个新阵列,然后将此阵列复制到现有阵列中。
尺寸必须相同,否则您会遇到麻烦

void caricaRegioni (Regione regioni[20]) {
    Regione abruzzo = {"Abruzzo", 65, "L'Aquila","Marco","Marsilio"};
    Regione basilicata = {"Basilicata", 77, "Potenza", "Vito", "Bardi"};
    Regione calabria = {"Calabria", 78,"Catanzaro","Jole", "Santelli" };
    Regione campania = {"Campania", 72, "Napoli", "Vincenzo", "De Luca"};
    Regione emilia = {"Emilia-Romagna", 45, "Bologna" "Stefano", "Bonaccini"};
    Regione friuli = {"Friuli-Venezia Giulia", 36, "Trieste", "Massimiliano", "Fedriga"};
    Regione lazio = {"Lazio", 62, "Roma", "Nicola", "Zingaretti"};
    Regione liguria = {"Liguria", 42,"Genova", "Giovanni", "Toti"};
    Regione lombardia = {"Lombardia", 25, "Milano", "Attilio", "Fontana"};
    Regione marche = {"Marche", 57, "Ancona", "Luca", "Ceriscioli"};
    Regione molise = {"Molise", 67, "Campobasso", "Donato", "Toma"};
    Regione piemonte = {"Piemonte", 21,"Torino", "Alberto", "Cirio"};
    Regione puglia = {"Puglia", 75, "Bari", "Michele", "Emiliano"};
    Regione sardegna = {"Sardegna", 88, "Cagliari", "Christian", "Solinas"};
    Regione sicilia = {"Sicilia", 82, "Palermo","Nello","Musumeci"};
    Regione toscana = {"Toscana", 52, "Firenze", "Enrico", "Rossi"};
    Regione trentino = {"Trentino-Alto Adige", 32, "Trento", "Arno", "Kompatscher" };
    Regione umbria = {"Umbria", 55, "Perugia", "Donatella", "Tesei"};
    Regione valle = {"Valle d'Aosta", 23, "Aosta", "Renzo", "Testolin"};
    Regione veneto = {"Veneto", 34, "Venezia", "Luca", "Zaia"};

    Regione new_regions[20] = { abruzzo,basilicata,calabria,campania,emilia,friuli,lazio,liguria,lombardia,marche,
                                molise,piemonte,puglia,sardegna,sicilia,toscana,trentino,umbria,valle,veneto};

    memcpy(regioni, new_regions, sizeof(new_regions));
}

我还调整了参数数组,使其具有固定的大小,因为如果只假设大小是长度x,而不是长度x,那就太粗心了。
regioni[0]={“Abruzzo”,65,“L'Aquila”,“Marco”,“Marsilio”}这将永远不会编译。非常感谢您的回答,它真的很明确@KamilCuk你是对的,抱歉我没注意到:我编辑了第一个example@GaetanoCrisafulli编号:Do:
regioni[0]=(Regione){“Abruzzo”,65,“L'Aquila”,“Marco”,“Marsilio”}