Я объявил следующую структуру в моей программе на C ++:
struct person {
char name[10]; /* first name */
char id[10]; /* ID number */
off_t pos; /* position in file, for demonstration */
} people[] = {
{ "arnold", "123456789", 0 },
{ "miriam", "987654321", 10240 },
{ "joe", "192837465", 81920 },
};
j = sizeof(people) / sizeof(people[0]); /* count of elements */
дает j = 3 здесь, т.е. нет элементов в массиве; всегда, даже если вы добавляете или уменьшаете элементы ...
Но
char b[8];
i = sizeof(b)/sizeof(b[0]);
дает значение i = постоянная = 4 на моей машине.
Теперь это оправдано, так как sizeof (char *) постоянен на моей машине, а sizeof (char) тоже постоянен.
Но как только я объявляю struct person, sizeof (person *) и sizeof (person) также должны быть постоянными, и это также должно давать постоянное значение, не так ли?