LINUX.ORG.RU

C.цикл и ячейка массива.


0

0

Здравствуйте,
Такая проблема:элемент массива в цикле ведёт себя абсолютно
непонятным для меня образом.
есть массив:
3 5 2 7 4 10 1 9 8 6
нужно просто разбить его на 2 части:
3  5  2  7  4;
10 1  9  8  6;
написав такой код:
int arr[9];
int fhalf[4];
int shalf[4];
int i;
for (i = 0; i <= 4; ++i) {
		fhalf[i] = arr[i];
		shalf[i] = arr[i + 5];
	}
я наивно ожидал получить в результате:
0  1  2  3  4
-  -  -  -  -
3  5  2  7  4 - fhalf
10 1  9  8  6 - shalf
но после выполнения fhalf[0] = 6, то есть fhalf[0] = arr[9];
экспериментальным путем было выяснено, что это происходит на 
последней итерации, т.е. i == 4;
(до этого fhalf[0] == 3, как и полагается);
Я, видимо, чего-то не понимаю, но как это выходит, что
на последнем шаге оно меняется вдруг с arr[0] на arr[9] ?
Ответ на: комментарий от meshkcah

индекс в объявлении задает не верхнюю границу в массиве, а общее количество элементов, в arr у тебя 9 элементов (0-8), в остальных двух по 4 (0-3).

uj2 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.