我有包含另一個結構的 2 個陣列的主結構。我在代碼中使用它作為常量,所以我想提前初始化它。我將如何正確地做到這一點?這是我的例子,它拋出了數百萬個警告,顯然不起作用。
#include <stdio.h>
typedef struct{
char a;
char b;
} subStruct1;
typedef struct{
char c;
char d;
}subStruct2;
typedef struct{
subStruct1 *SS1;
subStruct2 *SS2;
} mainStruct;
mainStruct MS = {
SS1: {{'a', 'b'}, {'A', 'B'}},
SS2: {{'c', 'd'}, {'C', 'D'}}
};
int main()
{
printf("%c %c %c",MS.SS1[0].a,MS.SS1[1].b,MS.SS2[1].c);
return 0;
}
uj5u.com熱心網友回復:
您不能使用陣列初始值設定項來初始化指標。但是,您可以使用具有陣列型別的復合文字:
mainStruct MS = {
.SS1 = (subStruct1 []){{'a', 'b'}, {'A', 'B'}},
.SS2 = (subStruct2 []){{'c', 'd'}, {'C', 'D'}}
};
這將創建兩個陣列物件并初始化兩個指標以指向每個物件的第一個元素。
另請注意,指定初始值設定項的語法是“ .field =”,而不是“ field :”
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327484.html
