... yapı türündeki nesneleri oluşturmak ve nesneleri ayarlamak gerekir. Ayrıca bir yapıyı bu şekilde başlatamazsınız. C dizileri statiktir, yani, boyutları dinamik olarak değiştirilemez. Ne istediğini bu değil eminim,
struct potNumber aPot[3]=
{
/* 0 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
},
/* 1 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
},
/* 2 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
}
};
Ama:
yapının doğru bir deklarasyon aşağıdaki
struct potNumber{
int array[20];
char theName[10][20];
};
gibi görünecektir ve bunu böyle başlatmak.
struct IntArray
{
size_t elements;
int *data;
};
struct String
{
size_t length;
char *data;
};
struct StringArray
{
size_t elements;
struct String *data;
};
/* functions for convenient allocation, element access and copying of Arrays and Strings */
struct potNumber
{
struct IntArray array;
struct StringArray theNames;
};
Şahsen ben şiddetle çıplak C dizileri kullanılmamasını öneriyoruz: Bunu yapmanın aklı başında yolu bazı Demirbaş kodu gereklidir. Her şeyi yardımcı yapıları ve işlevleri ile yapmak, arabelleğin altından/aşağısından ve diğer sorunlardan uzak kalmanızı sağlar. Her ciddi C kodlayıcısı, zamanla bu gibi şeylerle bir alt kod kütüphanesi oluşturur.
Ne tür hatalar alıyorsunuz? –
Bu gerçekten 'struct' tanımınız mı? – birryree