Функция realloc - C (СИ)
Формулировка задачи:
Есть такой фрагмент кода:
Была выделена динамическая память для массива array, после я решил перераспределить память с помощью функции realloc, отводя память только до последнего положительного элемента. Ну так вот, если я увеличиваю значение iotr, то в массиве пишется либо мусор, либо некоторые старые отрицательные элементы. Так и должно быть? Против мусора я ничего не имею, а вот почему старые пишутся, немножко недоумеваю. Есть подсознательные догадки, что « компилятор сам решает, что записать после выхода за динамический массив », но лучше объясните.
/* поиск отрицательных элементов и их размещение в конце массива*/ int k = N - 1, iotr; float tmp; for( i = N - 1; i >= 0; i-- ) if( array[i] < 0) { tmp = array[i]; for( j = i; j < k ; j++) array[j]= array[j+1]; array[k] = tmp; k--; } for( i = 0; array[i] > 0; i++ ) iotr = i; array = realloc( array, sizeof(float)*(iotr+1)); printf("\n"); for( i = 0; i <= iotr; i++ ) printf( "A[%d] = %.2f\t", i, array[i] ); free( array );
Решение задачи: «Функция realloc»
textual
Листинг программы
array[k] = tmp; k--;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д