Структуры особенно подх 242e49c одят для управления массивами связанных переменных. Рассмотрим, например, программу подсчета числа вхождений каждого ключевого слова языка «C». Нам нужен массив символьных строк для хранения имен и массив целых для подсчета.
keyword keycount
char *keyword[nkeys];
int keycount[nkeys];
char keyword
int keycount
struct key
keytab[nkeys];
keytab
struct key
;
struct key keytab nkeys
keytab вполне аналогична предыдущим инициализациям - за определением следует заключенный в фигурные скобки список инициализаторов:
struct key
keytab[] =
;
keytab
keytab getword keytab поиска, написанной нами в главе 4. (Конечно, чтобы эта функция работала, список ключевых слов должен быть расположен в порядке возрастания).
define maxword
main // Подсчет ключевых слов «С»
binary tab tab n
binary(char *word, struct key tab[],int n)
return(-1);
}
getword letter
nkeys - keytab keytab
sizeof keytab sizeof struct key
Дело в том, что в языке «C» предусмотрена унарная операция sizeof sizeof(object) char
int double #define nkeys
#define nkeys (sizeof(keytab) / sizeof(struct key))
getword getword getword
letter
eof
getword(char *w, int lim)
while (--lim > 0)
}
*(w-1) - '\0';
return letter
}
getword getch ungetch getword ungetch getword type ASCII
// Получить тип символа ASCII
int type(int c)
letter digit eof
#define letter 'a'
#define digit '0'
getword type type[] h <ctype h> языка «C» предусмотрены макросы isalpha isdalnum
getword
type
|