Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
 Аватар для Dz_ViTo
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51

Границы массива

13.08.2011, 03:21. Показов 9004. Ответов 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 байта и дает мне все что там есть
Может кто знает , дайте ответ =)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2011, 03:21
Ответы с готовыми решениями:

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++ ...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Народ подскажите такую вещь я написал программку для вставки элементов в массив при этом осуществляется проверка границ массива ! ...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...

21
Заблокирован
13.08.2011, 03:33
Цитата Сообщение от 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 );
1
13.08.2011, 14:04

Не по теме:

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

0
 Аватар для Dz_ViTo
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 16:55  [ТС]
Mayonez , а почему нет?
А и А[0] ето один и тот же адрес
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.08.2011, 17:12
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
но... конца массива не видно
оно и не должно было работать.
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
А и А[0] ето один и тот же адрес
В данном случае A - это указатель (адрес) на первый элемент массива, а А[0] - собственно, сам первый элемент массива.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.08.2011, 17:32
C++
1
2
3
for (int i=0;i<2;i++){
cout (*p+i);             \\ или *(p+i) не помню 
}
а не проще ли
0
 Аватар для Dz_ViTo
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 17:41  [ТС]
Nameless One, я имел ввиду &A[0]
0
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
13.08.2011, 17:47
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Mayonez , а почему нет?
А и А[0] ето один и тот же адрес
считается дурным тоном (зачем 4 лишних символа писать???)

Добавлено через 1 минуту
и не A[0], a &A[0]
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
13.08.2011, 17:51
Цитата Сообщение от Mayonez Посмотреть сообщение
считается дурным тоном (зачем 4 лишних символа писать???)
Кем считается? Вот захочется массив вектором заменить... Не в этой задаче, конечно
1
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
13.08.2011, 18:13
Цитата Сообщение от grizlik78 Посмотреть сообщение
Кем считается?
Шилдтом
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.08.2011, 18:20
Цитата Сообщение от Mayonez Посмотреть сообщение
считается дурным тоном (зачем 4 лишних символа писать???)
Что бы было более читабельно.
0
13.08.2011, 20:31

Не по теме:

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

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

Не по теме:

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

0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.08.2011, 00:40
Цитата Сообщение от asics Посмотреть сообщение
Однако в профессионально написаных программах на С/C++ вы никогда не встретите выражение &sample[0]
В профессионально написанных программах на C/C++ вы не встретите массивы вообще, за исключениям, разве что, низкоуровневых конструкций.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.08.2011, 01:01
CyBOSSeR, Ну...Шилдт же тоже не мальчик, что-то знает, что-то выдел...
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.08.2011, 01:18
Цитата Сообщение от asics Посмотреть сообщение
CyBOSSeR, Ну...Шилдт же тоже не мальчик, что-то знает, что-то выдел...
Шилдт может и не мальчик и что-то видел, но использование массивов в профессиональном ПО на C++ встречается очень редко, поэтому не важно как получается адрес первого элемента.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.08.2011, 01:24
Я конечно уважаю ваше мнение, но Шилдт есть Шилдт, его слово против вашего, сами понимаете...
0
 Аватар для Dz_ViTo
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
15.08.2011, 14:37  [ТС]
Нет массивов? Интересно... а если есть база данных? чем тогда поьзоватся?
0
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
15.08.2011, 14:57
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Нет массивов? Интересно... а если есть база данных? чем тогда поьзоватся?
контейнеры есть=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2011, 14:57
Помогаю со студенческими работами здесь

Класс динамического массива с проверкой выхода за границы массива
Задание такое: Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: ,...

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

Вылет за границы массива
Пожайлуста помогите найти ошибку, она возникает когда добавляю следующую строчку в main Monitor FOUR(THREE); // создаем копию третьего...

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

Выход за границы массива
#include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; void umnozh(int** arr, int n,int strings, int cols) { for (int i =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru