C-строки — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) |
Ulysses (обсуждение | вклад) (→C-строки) |
||
Строка 19: | Строка 19: | ||
} | } | ||
}</source> | }</source> | ||
− | Третий, | + | Третий, довольно распространённый вариант цикла по всей строке выглядит так: |
− | <source lang="cpp">while (*s | + | <source lang="cpp">while (*s) { |
− | // работа с очередным символом строки: *s | + | // работа с очередным символом строки: *s и в какой-то момент увеличение адреса: ++s / s++ |
+ | // часто бывает совмещено: *s++ / *++s | ||
}</source> | }</source> | ||
+ | Ввиду того, что увеличение адреса может выполняться где-угодно в теле цикла (в отличие от for, в котором оно обычно выполняется в заголовке), такой цикл может быть более труден для понимания и поиска в нём ошибок. Однако если тело цикла не велико (одна-две строчки), то в большинстве случаев опытный C-программист выберет именно while. | ||
[[Категория:C++]] | [[Категория:C++]] |
Версия 09:57, 30 октября 2012
C-строки
// Вычисление длины строки
int string_length(char * s) {
int len = 0;
// Цикл закончится при достижении нулевого байта, обозначающего конец строки
for ( ; *s != 0; ++s)
++len;
return len;
}
// Каждая латинская буква, кроме 'z', меняется на следующую в алфавите
void shift_string(char * s) {
for ( ; *s; ++s) { // Ненулевое значение кода символа преобразуется к True
// Этот заголовок цикла работает также, как в string_length
if ('a' <= *s && *s < 'z')
++(*s); // Увеличение кода символа на единицу
}
}
Третий, довольно распространённый вариант цикла по всей строке выглядит так:
while (*s) {
// работа с очередным символом строки: *s и в какой-то момент увеличение адреса: ++s / s++
// часто бывает совмещено: *s++ / *++s
}
Ввиду того, что увеличение адреса может выполняться где-угодно в теле цикла (в отличие от for, в котором оно обычно выполняется в заголовке), такой цикл может быть более труден для понимания и поиска в нём ошибок. Однако если тело цикла не велико (одна-две строчки), то в большинстве случаев опытный C-программист выберет именно while.