Главная /
Программирование на языке C в Microsoft Visual Studio 2010 /
В приведенной программе выполняется перераспределение памяти для увеличения размерности массива: #include <stdio.h> #include <stdlib.h> #define N 10 int main(void) { int i; int *arr = (int *)malloc(N*sizeof(int)); if (!arr) { printf("\nERROR!
В приведенной программе выполняется перераспределение памяти для увеличения размерности массива:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main(void)
{
int i;
int *arr = (int *)malloc(N*sizeof(int));
if (!arr) {
printf("\nERROR! Out of memory in calloc() function. Press any key: ");
_getch();
exit(1);
};
for (i=0; i<N; i++) {
arr[i] = i+1;
printf("arr[%d] = %d\n", i, arr[i]);
}
arr = (int *)realloc(arr, (N+2)*sizeof(int));
if (!arr) {
printf("\nERROR! Out of memory in realloc() function. Press any key: ");
_getch();
exit(1);
};
for (i=N; i<N+2; i++) {
arr[i] = i+1;
printf("arr[%d] = %d\n", i, arr[i]);
}
free(arr);
return 0;
}
Какие изменения необходимо внести в программу для ее корректной работы?
вопрос
Правильный ответ:
для корректной работы программы не требуются изменения
для выделения памяти для хранения массива всегда должна использоваться функция
calloc(N, sizeof(int))
добавление новых элементов в массив должно выполняться до перераспределения памяти
Сложность вопроса
90
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Комментарии:
Аноним
Экзамен прошёл на 4. Спасибо за ответы
07 янв 2020
Аноним
спасибо за ответ
20 ноя 2016
Другие ответы на вопросы из темы программирование интуит.
- # Определите, содержит ли приведенное объявление структур ошибки? Если содержит, то укажите, какие именно? struct A {int a; double x; }; struct B {A a; B b; double x; };
- # Сколько памяти будет выделено для хранения приведенного объединения? union payment { char card[10]; int sum; double date; };
- # Определите, возникнут ли ошибки при выполнении приведенной программы? Если возникнут, объясните, почему? int main(void) { enum coin { penny, nickel, dime, quarter, half_dollar, dollar}; enum coin money; char name[][12]={ "penny", "nickel", "dime", "quarter", "half_dollar", "dollar" }; money = half_dollar; printf("%s", name[money]); return 0; }
- # Какое утверждение является верным?
- # В приведенной программе выполняется перераспределение памяти для увеличения размерности массива: #include <stdio.h> #include <stdlib.h> #define N 10 int main(void) { int i; int *arr; arr = (int *)realloc(arr, (N+2)*sizeof(int)); for (i=0; i<N; i++) { arr[i] = i+1; printf("arr[%d] = %d\n", i, arr[i]); } if (!arr) { printf("\nERROR! Out of memory in realloc() function. Press any key: "); _getch(); exit(1); }; for (i=N; i<N+2; i++) { arr[i] = i+1; printf("arr[%d] = %d\n", i, arr[i]); } free(arr); return 0; } Какие изменения нужно внести в программу для ее корректной работы?