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