Форум программистов, компьютерный форум 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 и тд) и как обрабатывать события от них, подскажите книгу. подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.08.2012, 16:39  [ТС]     Как сдвинуть указатель на double на 4 байта?
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
я уж молчу про то, что этот массив надо потом как-то удалять (не забыв при этом всё посдвигать обратно).
Удаление там присутствует. Сложность только в правильном сдвиге была.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void DestructArray(double **p)
{
if(!p) return;// проверка корректности
int N; // количество строк
N=((int *)p)[-1];
for(int i=0; i<N; i++)
{
    p[i] = (double*)(((int *)*(p + i)) - 1); // сдвигаем назад указатели на массивы double.
    free(p[i]); // освобождаем память под массивами double.
}
(int *)p--;  // сдвигаем назад указатель на массив указателей.
free(p); // освобождаем память под массивом указателей.
}
Добавлено через 12 часов 11 минут
~OhMyGodSoLong~, если можно, ещё про это поясните. Компилятор не ругается на такое:
C++
1
2
(char*)p++;
(int*)(p[0])++;
, но и нужного сдвига не происходит. Приведение, как-бы не срабатывает при инкременте (по начальному типу указателя происходит).
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru