Форум программистов, компьютерный форум CyberForum.ru

Объясните программу сложения строк с использованием указателей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка использования неиницилизированных переменных http://www.cyberforum.ru/cpp-beginners/thread1765651.html
const int D_petrol = 100; double D, petrol, petrol_D; double Cost_petrol_1,Cost_petrol_2,Cost_petrol_3; double Price1, Price2, Price3; cout << "Distance is " << D; cin >> D; cout << "Petroleum used per 100 km- " << petrol; cin >> petrol; cout << "Costs of different petroleums " << Cost_petrol_1 << Cost_petrol_2 << Cost_petrol_3; cin >> Cost_petrol_1 >> Cost_petrol_2 >>...
C++ Программа не использует цикл for Объясните пожалуйста почему программа просто пропускает цикл и что нужно сделать для того чтобы она его использовала.Она просто выдает http://prntscr.com/bhv9cw #include "stdafx.h" #include <iostream> #include <cstdlib> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int num; http://www.cyberforum.ru/cpp-beginners/thread1765648.html
C++ Впечатления от прочтения стандарта
Сколько у вас уходило времени на прочтение стандарта? Тяжело ли он читается? Если человек до этого читал всякие вводные книги по С++, типа Праты, Лафоре, Липпмана и прочих, то после прочтения стандарта насколько много вопросов пропадает? И, что лучше: читать много книг по плюсам или прочесть стандарт?
Удаление и добавление элементов динамической структуры данных C++
Структура "Абитуриент": - фамилия, имя, отчество; - год рождения; - оценки вступительных экзаменов (3); - средний балл аттестата. 1. Удалите элемент c указанным номером. 2. Добавьте элемент после элемента с указанной фамилией. Объявление структуры:
C++ Какой способ работы с файлами лучше? http://www.cyberforum.ru/cpp-beginners/thread1765562.html
Мне известно по крайней мере три способа: 1 TStringList::LoadFromFile 2 std::ofstream 3 FILE *fp = fopen Чем отличаются эти способы? Какой из них самый быстрый и почему? Какой способ использовать если требуется пробежаться один раз по всем символам файла?
C++ Сформировать квадратную матрицу порядка n по заданному образцу Сформировать квадратную матрицу порядка n по заданному образцу. Добавлено через 5 минут 1 1 1 ... 1 1 1 1 0 0 ... 0 0 1 1 0 0 ... 0 0 1 . . . \ . . . подробнее

Показать сообщение отдельно
Humpty
13 / 13 / 5
Регистрация: 10.03.2016
Сообщений: 35
18.06.2016, 13:52     Объясните программу сложения строк с использованием указателей
Честно, похоже на пример из книжки "Как не надо программировать на C++" (кстати, классная, почитайте)

C++
1
2
while (*s1 != '\0')
        s1++;
Хорошая строка на C кончается нуль-символом (\0). Мы берем указатель s1, смотрим на значение за ним, если оно не равно нулю, инкрементим указатель. Как только дошли до нуль-символа, указатель s1 смотрит на конец строки.

C++
1
2
  for ( ; *s1 = *s2; s1++, s2++)
         ;//пустой оператор
Начнем с того, что этот цикл эквивалентен следующему

C++
1
2
3
4
while (*s1 = *s2) {
  s1++;
  s2++;
}
В условии происходит следующее, значение за указателем s2 присваевается по адресу s1. Сам по себе оператор присвоения возвращает значение присваемого значения. Т.е. если кто-то напишет
C++
1
return a = 42;
то функция вернет 42.

Здесь, если по адресу s2 лежал нуль-символ, то цикл прервется. Понятно, в теле цикла мы просто двигаем вперед оба указателя s1 и s2. При этом s1 в начале второго цикла указывал на конец строки.

А потом функция возвращает ноль, что бы это не значило...
 
Текущее время: 22:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru