Как правильно перебирать строку в Си?
Когда у нас есть строка и мы ищем какой-либо элемент, мы можем делать это с помощью счетчика i (i++) либо просто увеличивая адрес указателя (str2++). Результат будет один, хотя механизмы немного разные. Можно ли сказать что всегда можно использовать (str++) так как не нужно вводить дополнительную переменную i, т.е. меньше кода нужно писать?
И как правильно выбрать условие - while(str1[i] !='\0') или while(str1[i]) или while (*str1)? Равноценны ли данные выражения?
int main() {
int i = 0;
char* str1 = "abcd";
char* str2 = "efgh";
while (str1[i] !='\0' )
i++;
while (*str2)
str2++;
return 0;
}
Ответы (1 шт):
Можно ли сказать что всегда можно использовать (str++) так как не нужно вводить дополнительную переменную i, т.е. меньше кода нужно писать?
Нет, нельзя. У вас теряется указатель на начало строки. Если он вам больше не нужен - такой метод подойдёт.
Равноценны ли данные выражения?
Посмотрите сгенерированный ассемблерный код. Он может быть одинаков, а может и нет - зависит от компилятора.