Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делает эта функция / 10 сообщений из 10, страница 1 из 1
02.12.2012, 20:18
    #38061852
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
Всем привет!
Недавно писал контрольную, там была такой вопрос:
что делает эта функция?
Код: plaintext
1.
2.
3.
4.
5.
void mystery1(char *s1, const char *s2)
{
  while (*s1 != '\0') ++s1;
  for ( ; *s1 = *s2; s1++, s2++);
}


Я думаю она дописывает строку s2 к строке s1 , но непонятно почему в условии цикла for записано *s1 = *s2 ? Подскажите, пожалуйста :).
Заранее спасибо!
...
Рейтинг: 0 / 0
02.12.2012, 20:23
    #38061855
Что делает эта функция
MaximuS_GВсем привет!
Недавно писал контрольную, там была такой вопрос:
что делает эта функция?
Код: plaintext
1.
2.
3.
4.
5.
void mystery1(char *s1, const char *s2)
{
  while (*s1 != '\0') ++s1;
  for ( ; *s1 = *s2; s1++, s2++);
}


Я думаю она дописывает строку s2 к строке s1 , но непонятно почему в условии цикла for записано *s1 = *s2 ? Подскажите, пожалуйста :).
Заранее спасибо!
Выражение *s1 = *s2 присваивает символ из *s2 в *s1 и возвращает его как результат этого выражения.
Если оно равно нулю, значит это false, иначе true.
Т.е. цикл будет крутить пока *s2 не будет равен 0.
Но честно говоря загадки в коде не есть хорошо.
...
Рейтинг: 0 / 0
02.12.2012, 21:31
    #38061910
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
Спасибо!
загадки в кодеВыражение *s1 = *s2 присваивает символ из *s2 в *s1 и возвращает его как результат этого выражения.
Так а почему это действие записано в блоке, в котором должны быть условие? Или так можно писать?
Вам не сложно переписать "нормально" данное условие, что бы мне было легче его понять?
...
Рейтинг: 0 / 0
02.12.2012, 21:42
    #38061922
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
Код: plaintext
1.
2.
3.
4.
5.
while (*s2 != '\0')
{
	*s1 = *s2;
	s1++; s2++
}
...
Рейтинг: 0 / 0
02.12.2012, 21:47
    #38061926
Что делает эта функция
MaximuS_GСпасибо!
загадки в кодеВыражение *s1 = *s2 присваивает символ из *s2 в *s1 и возвращает его как результат этого выражения.
Так а почему это действие записано в блоке, в котором должны быть условие? Или так можно писать?
Вам не сложно переписать "нормально" данное условие, что бы мне было легче его понять?
Так можно писать.

Код: plaintext
1.
2.
3.
4.
5.
void mystery1(char *s1, const char *s2)
{
  while (*s1 != '\0') ++s1;
  for ( ; 0 == (*s1 = *s2); s1++, s2++);
}



или

Код: plaintext
1.
2.
3.
4.
5.
void mystery1(char *s1, const char *s2)
{
  while (*s1 != '\0') ++s1;
  for ( ; 0 == *s2; s1++, s2++) *s1 = *s2;
}
...
Рейтинг: 0 / 0
02.12.2012, 22:01
    #38061938
Что делает эта функция
Точнее там:
Код: plaintext
1.
0 !=
...
Рейтинг: 0 / 0
02.12.2012, 22:12
    #38061948
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
ага, спасибо, так понятней!
Но вот у меня не получается:
Код: plaintext
1.
2.
	char *st = "asd";
	for (int x=0;st;st++)


Здесь в строке нулевой символ будет 4ый. То есть цикл должен прокрутиться 3 раза, но он крутиться бесконечно :).
...
Рейтинг: 0 / 0
02.12.2012, 22:13
    #38061950
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
Cerebrum
Код: plaintext
1.
2.
3.
4.
5.
while (*s2 != '\0')
{
	*s1 = *s2;
	s1++; s2++
}


Спасибо, так наверное и лучше было бы записать)
...
Рейтинг: 0 / 0
02.12.2012, 22:19
    #38061956
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
MaximuS_Gага, спасибо, так понятней!
Но вот у меня не получается:
Код: plaintext
1.
2.
	char *st = "asd";
	for (int x=0;st;st++)


Здесь в строке нулевой символ будет 4ый. То есть цикл должен прокрутиться 3 раза, но он крутиться бесконечно :).

Код: plaintext
1.
2.
	char *st = "asd";
	for (;*st;st++)
...
Рейтинг: 0 / 0
02.12.2012, 22:28
    #38061965
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает эта функция
Anatoly Moskovsky , ага, спасибо! :) Тупонул, теперь все работает четко! :)
Всем удачи!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делает эта функция / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]