#arrays #sorting
#массивы #сортировка
Вопрос:
Я работал над пониманием сортировки и столкнулся с этой проблемой. Когда я печатаю размер array[]
, я получаю 32. Почему это 32, а не 8? Также, когда я печатаю каждый элемент, почему числа сортируются в конце массива (начиная с массива [24] и далее?). Я также пытался с
int array[8]= {6,3,8,5,2,7,4,1};
но это ничего не меняет.
Спасибо за вашу помощь!
#include <stdio.h>
int array[]= {6,3,8,5,2,7,4,1};
int main ()
{
printf("si of array %lu n", sizeof(array));
for (int i = 0; i < sizeof(array); i )
{
for (int j = i 1; j < sizeof(array); j )
{
if (array[i] > array[j])
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
printf("sizee of array %lu n", sizeof(array));
for (int i = 0; i < sizeof(array); i )
{
printf("array[%i] = %d n", i ,array[i]);
}
return 0;
}
Ответ №1:
sizeof(array)
вернет размер массива в байтах, и поскольку каждое целое число равно 4 байтам, именно поэтому вы получаете размер в 32 байта (8 * 4 байта) для 8 элементов.
Чтобы получить количество элементов в массиве, вы должны использовать:
size_t n = sizeof(array) / sizeof(int);
Теперь, если вы используете указанный выше размер, ваша сортировка должна работать нормально.
Комментарии:
1. Спасибо! имеет смысл