C и Java - похожие языки, поэтому вы можете понимать части программы.
Есть несколько важных отличий.C использует массив char
для строк и отмечает конец строки завершающим '\0'
.Аналогично массивам указатели.
В функции
int match ( char *pat, char *str )
pat
- указатель на строку шаблона, str
- строка, с которой нужно сопоставить.
В теле функции *pat
- первый символ шаблона.Аналогично для *str
.
pat+1
- указатель на следующий символ строки, за которым могут следовать другие символы.Следующим символом также может быть маркер конца '\0'
.
. В C вы можете использовать числа для логических операций.
!*str
- логическое отрицание значения первого символа, гдеstr
указывает на.'\0'
- это значение 0 (конец строки), которое рассматривается как false
.Любой символ в строке имеет ненулевое значение и считается true
.
Тип возвращаемого значения int
используется как логическое значение.в C нет определенного типа boolean
или bool
.Например,
case '\0' : return !*str;
означает: Когда мы достигли конца шаблона (case '\0':)
, мы возвращаем true
(не 0), если str
указывает на конец строки ('\0'
)в противном случае мы возвращаем false
, потому что логическое отрицание чего-либо != 0
(true
) равно 0
(false
).