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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
#1

Границы массива - C++

13.08.2011, 03:21. Просмотров 2459. Ответов 21
Метки нет (Все метки)

Пришла ночью дурная идея... как определить конец массива:
C++
1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char *argv[]){
    int *p, A[]={1, 2, 3};
    p = &A[0];
    while(p != NULL){
     cout<< *p<< endl;
     p++;
     getch();
    } 
    system("PAUSE");
    return EXIT_SUCCESS;
}
но... конца массива не видно, и он долбит память дальше по 4 байта и дает мне все что там есть
Может кто знает , дайте ответ =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2011, 03:21     Границы массива
Посмотрите здесь:

Границы массива - C++
Подскажите пожалуйста, что надо изменить в программке, чтобы &quot;Т&quot; не выходила за границы массива. Спасибо! #include &lt;iostream&gt; //...

Выход за границы массива - C++
Выхожу за пределы массива, но вот только не понимаю как. #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; const...

Проверить на выход за границы массива - C++
ПРивет, помогите пожалуйста, пишу класс - динамический массив, в перегрузке оператора нужно проверить на выход за границы, но не знаю как...

Не могу установить границы массива - C++
Добрый день! Код имитирует работу стека. #include&lt;iostream&gt; using namespace std; class Stack { protected:

Реализация защиты выхода за границы массива - C++
Доброго времени! Прошу помочь разобраться с вопросом возникшим, при изучении C++. Я только начинаю изучать язык и ни как не могу понять вот...

Индекс находился вне границы массива - C++
Подскажите , что сделано не так , если при вводе значения больше 2-ух , он выдает ошибку &quot;Индекс находился вне границы массива&quot;. ...

Массивы: Проверка на выход за границы массива - C++
Здравствуйте! Пишу код хождения коня по шахматной доске. Конь пока стоит на одном месте и ходит по кругу. Как можно реализовать проверку на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
13.08.2011, 03:33     Границы массива #2
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Пришла ночью дурная идея... как определить конец массива:
C++
1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char *argv[]){
    int *p, A[]={1, 2, 3};
    p = &A[0];
    while(p != NULL){
     cout<< *p<< endl;
     p++;
     getch();
    } 
    system("PAUSE");
    return EXIT_SUCCESS;
}
но... конца массива не видно, и он долбит память дальше по 4 байта и дает мне все что там есть
Может кто знает , дайте ответ =)
Размер массива можно определить посредством деления размера всего массива на размер его элемента.

C++
1
sizeof( A ) / sizeof( *A )
либо эквивалентное выражение

C++
1
sizeof( A ) / sizeof( A[0] )
Если вы работаете в С++, то можно использовать следующую простую шаблонную функцию, которая возвращает размер массива

C++
1
2
3
4
5
template <typename T. size_t N>
inline size_t size( const T ( & )[N] )
{
   return ( N );
}
Тогда просто можете записать size_t len = size( A );
Mayonez
13.08.2011, 14:04
  #3

Не по теме:

Цитата Сообщение от Dz_ViTo Посмотреть сообщение
C++
1
p = &A[0];
нееееееееееееееееееееееет

Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 16:55  [ТС]     Границы массива #4
Mayonez , а почему нет?
А и А[0] ето один и тот же адрес
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
13.08.2011, 17:12     Границы массива #5
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
но... конца массива не видно
оно и не должно было работать.
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
А и А[0] ето один и тот же адрес
В данном случае A - это указатель (адрес) на первый элемент массива, а А[0] - собственно, сам первый элемент массива.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
13.08.2011, 17:32     Границы массива #6
C++
1
2
3
for (int i=0;i<2;i++){
cout (*p+i);             \\ или *(p+i) не помню 
}
а не проще ли
Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 17:41  [ТС]     Границы массива #7
Nameless One, я имел ввиду &A[0]
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 17:47     Границы массива #8
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Mayonez , а почему нет?
А и А[0] ето один и тот же адрес
считается дурным тоном (зачем 4 лишних символа писать???)

Добавлено через 1 минуту
и не A[0], a &A[0]
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
13.08.2011, 17:51     Границы массива #9
Цитата Сообщение от Mayonez Посмотреть сообщение
считается дурным тоном (зачем 4 лишних символа писать???)
Кем считается? Вот захочется массив вектором заменить... Не в этой задаче, конечно
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 18:13     Границы массива #10
Цитата Сообщение от grizlik78 Посмотреть сообщение
Кем считается?
Шилдтом
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.08.2011, 18:20     Границы массива #11
Цитата Сообщение от Mayonez Посмотреть сообщение
считается дурным тоном (зачем 4 лишних символа писать???)
Что бы было более читабельно.
silentnuke
13.08.2011, 20:31
  #12

Не по теме:

Цитата Сообщение от Mayonez Посмотреть сообщение
Шилдтом
оО, где вы у него такое нашли?

asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
13.08.2011, 23:50     Границы массива #13
Цитата Сообщение от silentnuke Посмотреть сообщение
оО, где вы у него такое нашли?
Герберт Шилдт - Полный справочник по C++. ст. 102
Однако в профессионально написаных программах на С/C++ вы никогда не встретите выражение &sample[0]
silentnuke
14.08.2011, 00:00
  #14

Не по теме:

Цитата Сообщение от asics Посмотреть сообщение
Герберт Шилдт - Полный справочник по C++. ст. 102
не правда, ст. 101

CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.08.2011, 00:40     Границы массива #15
Цитата Сообщение от asics Посмотреть сообщение
Однако в профессионально написаных программах на С/C++ вы никогда не встретите выражение &sample[0]
В профессионально написанных программах на C/C++ вы не встретите массивы вообще, за исключениям, разве что, низкоуровневых конструкций.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.08.2011, 01:01     Границы массива #16
CyBOSSeR, Ну...Шилдт же тоже не мальчик, что-то знает, что-то выдел...
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.08.2011, 01:18     Границы массива #17
Цитата Сообщение от asics Посмотреть сообщение
CyBOSSeR, Ну...Шилдт же тоже не мальчик, что-то знает, что-то выдел...
Шилдт может и не мальчик и что-то видел, но использование массивов в профессиональном ПО на C++ встречается очень редко, поэтому не важно как получается адрес первого элемента.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.08.2011, 01:24     Границы массива #18
Я конечно уважаю ваше мнение, но Шилдт есть Шилдт, его слово против вашего, сами понимаете...
Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
15.08.2011, 14:37  [ТС]     Границы массива #19
Нет массивов? Интересно... а если есть база данных? чем тогда поьзоватся?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 14:57     Границы массива
Еще ссылки по теме:

Исправить выход за границы двумерного динамического массива - C++
Уважаемые форумчане, помогите, проблема в том, что пишет ошибку после выполнения функции вывода массива, вот код //распечатка матрицы ...

Почему происходит выход за границы массива в функции Analyze()? - C++
#include &quot;Analyzer.h&quot; #include &quot;HashTable.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...

При вызове функции необработанное исключение, выход за границы массива - C++
bool checkprocessed(point data,int xx,int yy,int wind) { bool mark=false; int s=0; for(int k=xx; k&lt;xx+wind;k++){ for(int...

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

Границы кучи - C++
Как корректно определить границы кучи в любой момент времени без использования функций менеджера дрп в си? Добавлено через 18 часов 7...


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

Или воспользуйтесь поиском по форуму:
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
15.08.2011, 14:57     Границы массива #20
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Нет массивов? Интересно... а если есть база данных? чем тогда поьзоватся?
контейнеры есть=)
Yandex
Объявления
15.08.2011, 14:57     Границы массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru