Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.95
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
#1

Почему индекс массива начинается с нуля ? - C++

03.07.2013, 10:40. Просмотров 6764. Ответов 46
Метки нет (Все метки)

Почему первый элемент массива обозначается 0 , а не 1.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 10:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему индекс массива начинается с нуля ? (C++):

Почему счетчик в цикле for начинается с нуля, а не с единицы? - C++
привет. почему когда надо сделать какое-то действие, например 4 раза, то пишут: for (int i=0, i<4, i++) { //... } а не так: ...

Не могу понять, почему ввод строк начинается со 2-ой строки - C++
не могу понять, почему ввод строк начинается со 2-ой строки #include <iostream> #include<stdio.h> #include<stdlib.h> ...

Почему после считывания матрицы из файла начинается повторное считывание? - C++
Здравствуйте. ПРоблема такова, считывает размер матрицы и саму матрицу, после успешного считвания начинает по новой её считывать, хотя...

Почему если массив начинается с положительного числа, то он не суммируется в общую сумму? - C++
#include <iostream> using namespace std; int main() { setlocale( LC_ALL,"Russian" ); cout<<"Введите размер...

указать индекс второго массива, при котором оба массива перестают совпадать - C++
Даны два массива, они упорядочены и надо указать индекс второго массива при котором оба массива перестают совпадать. Например: ...

Удалить из массива тех абонентов, телефон которых начинается с цифры 3 - C++
Сформировать массив записей, описывающих следующую таблицу: --------------------------------------------------------------- Фамилия ...

46
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 10:41 #2
потому что смещение адреса первого элемента массива от начала этого массива равно нулю
0
MaGu
0 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 29
03.07.2013, 10:41 #3
потому что так заведено изначально
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
03.07.2013, 10:47 #4
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Почему первый элемент массива обозначается 0 , а не 1.
ну потому что
Цитата Сообщение от Croessmah Посмотреть сообщение
потому что смещение адреса первого элемента массива от начала этого массива равно нулю
и это не только в программировании
например только родившийся ребенок
первый год жизни, но возраст 0 лет
1
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
03.07.2013, 10:57  [ТС] #5
Croessmah,
А смещение адреса второго элемента,который называется "1", равно 1 ?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 10:59 #6
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
равно 1 ?
1*размер элемента
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
03.07.2013, 11:00 #7
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А смещение второго элемента,который называется "1", равно 1 ?
равно размеру элемента массива
например если массив из char то смешение равно 1 байту
если элемент массива строка из 100 char то будет 100 байт
в общем случае
i*sizeof(arr[0])
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
03.07.2013, 11:08  [ТС] #8
Croessmah,
Размер типа элемента ?

Добавлено через 6 минут
А что нельзя написать компилятор, в котором прописать, что
номер массива равен смещению адреса + 1.
Это сложно ?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 11:10 #9
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Это сложно ?
Это нафиг никому не нужно, да и не удобно
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
03.07.2013, 11:12 #10
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А что нельзя написать компилятор, в котором прописать, что
номер массива равен смещению адреса + 1.
Это сложно ?
А зачем ?
переучивать армию программистов? ломать логику ?
только потому что кто то не может понять?
этак и на линейке нужно будет выбросить 0 и начинать с 1 ( миллиметр? сантиметр? микрон?)
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 11:12 #11
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А что нельзя написать компилятор
можно проще - написать свой класс и хоть с -3,45 начинайте
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
03.07.2013, 11:17  [ТС] #12
Я понимаю для машинного кода 0, но для ООП языка первый элемент 0 - это не позорище ли ?
Единицу называть нулём, это всё равно что белое называть чёрным.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 11:21 #13
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А что нельзя написать компилятор, в котором прописать, что
номер массива равен смещению адреса + 1.
ну и получите язык типа Паскаль, в котором более жесткий синтаксис, нежели в Си, например, и вымрет такой язык через некоторе время, как Паскаль

Добавлено через 3 минуты
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
для ООП языка первый элемент 0 - это не позорище ли ?
позорище не 0 в ООП, а программист, который не может понять почему 0, и быстро адаптироваться к этому
1
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,553
Завершенные тесты: 1
03.07.2013, 11:24 #14
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А что нельзя написать компилятор
Попробуйте скооперироваться с GSSR.
Цитата Сообщение от ValeryS Посмотреть сообщение
переучивать армию программистов?
Скажите это армии дельфийских программистов.

А вообще это все
Почему индекс массива начинается с нуля ?
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
03.07.2013, 11:24  [ТС] #15
Thinker,
Адаптироваться к тому, что 1=0 ?
0
03.07.2013, 11:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 11:24
Привет! Вот еще темы с ответами:

Переставить соседние элементы массива: 1-й со 2-м, 3-й с 4-м и т.д. Нумерация элементов начинается с единицы - C++
Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива....

Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность - C++
Помогите, пожалуйста, написать программу, которая находила бы номер элемента из массива А, с которого массив В начинается как...

Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность - C++
Помогите, пожалуйста, написать программу, которая находила бы номер элемента из массива А, с которого массив В начинается как...

Вычислить среднее арифметическое элементов, расположенных до первого нуля и после последнего нуля - C++
В одномерном массиве, состоящем из п элементов, вычислить: среднее значение элементов, расположенных в массиве между первым последним...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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