我真搞不懂我为什么会犯这个错误。我的代码编译得很好,但我希望有0条警告。搜索堆栈溢出后,没有人具有与我所使用的结构类型相同的结构类型。下面是我的代码片段(这些是由名字组成的)
如果它有助于我的MAXCONTACTS设置为5
struct Contact conNum[MAXCONTACTS] = { { {"Rick", { '\0' }, "Grimes" },
{11, "Trailer Park", 0, "A7A 2J2", "King City" },
{"4161112222", "4162223333", "4163334444" } },
{
{"Maggie", "R.", "Greene" },
{55, "Hightop House", 0, "A9A 3K3", "Bolton" },
{"9051112222", "9052223333", "9053334444" } },
{
{"Morgan", "A.", "Jones" },
{77, "Cottage Lane", 0, "C7C 9Q9", "Peterborough"},
{"7051112222", "7052223333", "7053334444" } },
{
{"Sasha", {'\0'}, "Williams" },
{55, "Hightop House", 0, "A9A 3K3", "Bolton"},
{"9052223333", "9052223333", "9054445555" } },
};
编辑:这是我的结构声明
// Structure type Name declaration
struct Name {
char firstName[31];
char middleInitial[7];
char lastName[36];
};
struct Address {
int streetNumber;
int apartmentNumber;
char street[41];
char postalCode[8];
char city[41];
};
struct Numbers {
char cell[11];
char home[11];
char business[11];
};
struct Contact {
struct Name name;
struct Address address;
struct ``Numbers numbers;
};
发布于 2018-12-02 16:39:29
struct Address
包含两个int
字段,后面是两个char
数组:
struct Address {
int streetNumber;
int apartmentNumber;
char street[41];
char postalCode[8];
char city[41];
};
但您不能按照这个顺序初始化它们:
{11, "Trailer Park", 0, "A7A 2J2", "King City" },
除非使用命名初始化器,否则必须按顺序指定字段。把街道号码放在第一位,然后是公寓号码,然后是街道号码:
{11, 0, "Trailer Park", "A7A 2J2", "King City" },
对其他三个人也是这样。
发布于 2018-12-02 16:39:22
{11, "Trailer Park", 0, "A7A 2J2", "King City" },
此初始化是用于
struct Address {
int streetNumber;
int apartmentNumber;
char street[41];
char postalCode[8];
char city[41];
};
正如您所看到的,您正在尝试将"Trailer Park"
初始化为int apartmentNumber;
。
所以你才会收到警告。
因此,将结构的定义更改为
struct Address {
int streetNumber;
char street[41];
int apartmentNumber;
char postalCode[8];
char city[41];
};
只在一个地方
或
更改所有位置的初始化顺序,如下所示。
{11, 0, "Trailer Park", "A7A 2J2", "King City" },
https://stackoverflow.com/questions/53582241
复制相似问题