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

Как сдвинуть указатель на double на 4 байта? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура в структуре http://www.cyberforum.ru/cpp-beginners/thread638711.html
Подскажите пожалуйста! Вот для начала немного кода: struct r2 { // ... }; struct somestruct { struct r2; // ... };
C++ Как вписать в переменную текст, размер которой превышает 4096 байтов написал скрипт , который сохрянает введенный текст в файл . и я смотрю , кайдый файл 4096 байтов . как решить проблему ? #include <iostream> using namespace std; main() { FILE * fo; fo = fopen("D:\\vagaa\\pop.txt","wt"); char text; cin.getline(text, 1024); http://www.cyberforum.ru/cpp-beginners/thread638698.html
Неопределенный массив C++
Как мне задать массив в котором может быть любое количество информации. То есть изначально она не известна. Я буду из файла в этот массив заносить символы и их количество может меняться...
C++ Что использовать с указателями? 0, NULL, nullptr?
NULL в WinDef.h описан как #define NULL 0. То есть в случае использования как с указателями, так и другими переменными разницы 0. Про nullptr только час назад узнал, даёт ли он какие-либо реальные преимущества? Но, вообщем-то, главный вопрос: что использовать?
C++ Упрощение кода http://www.cyberforum.ru/cpp-beginners/thread638678.html
Можно ли как нибудь сократить или упростить код? cin>>answer; if ((answer!="y") && (answer!="n")) { while ((answer!="y") && (answer!="n")) { cout<<"Введите верное значение: "; cin>>answer; }
C++ Как создать полноценное приложение на WinApi с различными элементами (textbox.) подскажите книгу Как создать полноценное приложение на WinApi с различными элементами(checkbox, textbox, button и тд) и как обрабатывать события от них, подскажите книгу. подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.08.2012, 01:49     Как сдвинуть указатель на double на 4 байта?

Не по теме:

Дично я считаю, что такие "оптимизации" до добра не доводят. Там больше времени потратится на эти преобразования для вытягивания длин и т. п.; я уж молчу про то, что этот массив надо потом как-то удалять (не забыв при этом всё посдвигать обратно).

Но как упражнение на понимание указателей — вполне окей.

В общем это. Небольшой ликбез. Есть lvalue, есть rvalue. lvalue — это нечто, что объективно существует в памяти и сохраняется между вычислениями различных выражений. Например, это любая переменная. rvalue — это нечто, что сущестует только на время вычисления выражения (но оно тоже хранится в памяти, временно).

В выражении x = x + 5; оба икса это lvalue, но само подвыражение (x + 5) — это rvalue. Его значение временно хранится в памяти, пока оно не будет записано в x. Но это не переменная. Инкремент увеличивает значение переменной. Он не может увеличить значение rvalue-величины, так как её формально нет в памяти, она умрёт как только закончится вычисление выражения.

Приведение типов тоже даёт rvalue, поэтому инкремент не может его увеличить.

В общем, к чему это я. Вместо
((int *)(p[i]))++;
напишите
p[i] = (int *)(p[i]) + 1;
Должно помочь.
 
Текущее время: 22:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru