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

Указатели - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Передать двумерный массив в функцию http://www.cyberforum.ru/cpp-beginners/thread268981.html
подскажи те как передать двумерный массив в функцию?)
C++ Файлы Здоров Всем !! Мне нужно переписать из одного файла в другой до одноcтрочного комм.Как изменить? Пример : Это лежит в файле (text) : adaaww//wddd sad//hh Результат в другом файле (texty) : http://www.cyberforum.ru/cpp-beginners/thread268972.html
error LNK2019: unresolved external symbol "public: __thiscall Shape2D::Shape2D(void)" (??0Shape2D@@QAE@XZ) C++
Наследование. Базовый класс: class Shape2D { public: Shape2D(); virtual ~ Shape2D(); virtual float Area( )= 0; virtual float Perimeter() = 0; virtual void PrintMessage();
Дана строка. Вывести все слова, содержащиеся в строке, в столбец. C++
3)Дана строка. Вывести все слова, содержащиеся в строке, в столбец.
C++ StringGrid - условия выбора ячеки http://www.cyberforum.ru/cpp-beginners/thread268958.html
Уперся в вопрос.! В СтрингГриде 4 столбца и 16 строк. При запуске программы выглядит все примерно так: ____1___2____3____4__ 1_|____|____|____|4::1 | 2_|____|____|____|4::2 | . 16|____|____|____|4::16|
C++ Даны два файла,определить совподают ли компоненты файлов Помогите,пожалуйста,написать программу. Даны два файла,определить совподают ли компоненты файлов,если нет вывести номер элемента где они различны. подробнее

Показать сообщение отдельно
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
03.04.2011, 21:18     Указатели
C++
1
2
3
4
5
6
7
8
9
        char *mas; mas=new char[20];
        int n;
        gets(mas);
        for(n=0; *mas!=0; mas++, n++) 
        {
                if(*mas=='.') {cout<<" точка в позиции:"<<n<<endl; break;}
        }
        mas-=n;
        cout<<mas<<endl;
если с этой строчкой mas-=n; то конечно будет выводить,
иначе значит при вводе в массив mas не вводилось точек '.'
n=n*10+ *p++ - '0' ;
к примеру возьмём число:1234
переменная n вначале = 0. Если не умножать на 10, то получится число 1+2+3+4=10
А нам надо число 1234. Поэтому сначало берётся число "1", ведь *p ещё указывает на 1 из 1234. *p это разименование указателя, т.е. получение значения по адресу, на который указывает указатель (в данном случае 1). Потом при p++ указатель увеличивается на 1 и указывает уже на 2 из числа 1234. Но это ведь символы(тип Char) а не целочисленное значение int, тоесть число "1" это 49 (смотри ascii) "2" это 50. Поэтому надо отнять "0". А посмотрев в эту же таблицу ascii оказывается "0" это число 48. Поэтому и отнимается число "0" (48). Ведь нам не надо прибавлять в выражении n*10+ *p++ 49 вместо 1.
Такие вот дела

Добавлено через 35 минут
тоесть отнимается "0" (48) от выражения, которое уже в этой части: n*10+ *p
при n=0, вначале р="1" , n*10+ *p значит:
n=0*10+1 //n=1, р++ указывает на "2" из 1234
n=1*10+2 //n=12, р++ указывает на "3" из 1234
n=12*10+3 //n=123, р++ указывает на "4" из 1234
n=123*10+4 //1234
 
Текущее время: 18:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru