Определив структуру, Вы можете объявить его экземпляр и присвоения значений членов, используя точку записи. Следующий пример иллюстрирует использование структуры месяца.
#include <stdio.h>
#include <string.h>
struct month
{
char name[10];
char abbreviation[4];
int days;
};
int main()
{
struct month m;
strcpy(m.name, "January");
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n", m.name, m.abbreviation, m.days);
return 0;
}
Выпуск программы будет следующим :
January is abbreviated as Jan and has 31 days |
Все компиляторы ANSI C позволяет присвоить одной структуры к другой, выполняя мудрые - член копию. Если бы у нас были месяц структур призвали m1 и m2, Затем мы можем присвоить значения m1 m2 со следующим :
- Структура Пойнтер с членами.
- Структура Initializes.
- Прохождение к структуре функции.
- Стрелки и сооружений.
Конструкции с Пойнтер члены в C
Холдинг строки фиксированного размера массива является неэффективное использование оперативной памяти. Более эффективным подходом было бы использовать указатели. Стрелки используются в структурах точно так же, как они используются в обычной Указатель определений. Давайте посмотрим пример :
#include <string.h>
#include <malloc.h>
struct month
{
char *name;
char *abbreviation;
int days;
};
int main()
{
struct month m;
m.name = (char *)malloc((strlen("January")+1) *
sizeof(char));
strcpy(m.name, "January");
m.abbreviation = (char *)malloc((strlen("Jan")+1) *
sizeof(char));
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n",
m.name, m.abbreviation, m.days);
return 0;
}
Выпуск программы будет следующим :
January is abbreviated as Jan and has 31 days |
|