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

Как правильно? - C++

Восстановить пароль Регистрация
 
 
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.08.2011, 15:37     Как правильно? #1
Совершать итерацию, по куску памяти выделенному в куче?

например
C++
1
int* t = new int [10];
Как перемещаться. С каким шагом?


Или
C++
1
2
3
4
5
struct S
{
int a;
};
S* st = new S [10]
Как мне подсказали на форуме минимальный адресуемый размер это байт.
на встроенном массиве:

C++
1
2
3
4
5
6
int mas [10] ={0};
 
mas [6] = 7;
 
int* z1 = & mas[1];
int* z2 = & mas[2];
шаг равен 4, т.е. размеру инта (z1, z2);
А в куче?

C++
1
2
t++; //отличается более чем на 4;
t+sizeof(int);// тоже адрес более чем на 4 отличается.
В чем ошибка? Как перемещаться подскажите плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.08.2011, 17:21  [ТС]     Как правильно? #21
убрал.
теперь вот так

C++
1
return (top+i)->val;
результат на картинке.
Миниатюры
Как правильно?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 17:24     Как правильно? #22
Цитата Сообщение от silent_1991 Посмотреть сообщение
в общем случае, бывают колебания в зависимости от компилятора и ОС)
от разрядности ОС
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,960
27.08.2011, 17:32     Как правильно? #23
Цитата Сообщение от AzaKendler Посмотреть сообщение
результат на картинке.
Возможно ты чего-то недоговариваешь, так как программа из #7 в принципе не компилируема.
Не верю (с), в общем.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.08.2011, 17:36  [ТС]     Как правильно? #24
grizlik78, спасибо в квадрате. ошибка была не там. а в конструкторе. И за арифметику спасибо. Буду читать еще раз. и еще раз.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
27.08.2011, 17:44     Как правильно? #25
Цитата Сообщение от Deviaphan Посмотреть сообщение
от разрядности ОС
Точно)) Что-то сегодня я не в духе...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
27.08.2011, 18:24     Как правильно? #26
Цитата Сообщение от AzaKendler Посмотреть сообщение
return (top+i)->val;
Может все таки упростить запись до:
C++
1
return top[i].val;
?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 18:28     Как правильно?
Еще ссылки по теме:

C++ Как правильно использовать классы? Как вывести значение класса на экран?
Как правильно записывать условные операторы и как прервать проверку при достижении результата C++
Программа правильно сохраняет, но не правильно считывает матрицу из файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.08.2011, 18:28  [ТС]     Как правильно? #27
CyBOSSeR, да можно и так.
Yandex
Объявления
27.08.2011, 18:28     Как правильно?
Ответ Создать тему
Опции темы

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