Динамическое распределение памяти
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат на тему политика, реферати українською
Добавил(а) на сайт: Jaroslavov.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата
Программа выделяет память под 20 переменных типа int, заполняет их случайными числами из интервала [-3;7] и выводит их на экран.
Задание №8
Программа хранит матрицы в виде двух структур:
Struct Matr1{int m, n; int *ptr};
Struct Matr2{int m, n; int **ptr};
И выделяет память под них с помощью следующих функций:
Int DinMatr1(Matr1 *matr);
Int DinMatr2(Matr2 *matr);
Задание №10
Программа получает с клавиатуры натуральные числа, сохраняя их в куче, конец ввода – число 0. По окончании ввода числа выводятся на экран.
Задание №12
Программа вычисляет октоэдрическую норму матрицы произвольных размеров.
Задание №14
Программа вычисляет общий размер свободной кучи.
Задание №16
Программа выполняет считывание матрицы произвольных размеров из файла (разделителями являются пробелы), вывод этой матрицы на экран, а также запись в файл.
Руководство программиста
В этом разделе будут приведены листинги программ с комментариями.
Задание №2
#include
#include
#include int main(void)
{ char *x,*y,*z; //Объявление переменных x=(char *)malloc(sizeof(char)); //Выделение динамической
памяти для *x y=(char *)malloc(sizeof(char)); // --//-- *y z=(char *)malloc(sizeof(char)); // --//-- *z clrscr(); // Очистка экрана printf("Adress of *x=%pn",x); // Вывод на экран адреса
начала блока для *x printf("Adress of *y=%pn",y); // --//-- *y printf("Adress of *z=%pn",z); // --//-- *z free (z); // Освобождение блока
выделенного для *z free (y); // --//-- *y
free (x); // --//-- *x
/*
Для того чтобы убедиться что для каждого из однобайтовых данных
в куче выделено 16 байт т.е. 1 параграф нужно сравнить три адреса, которые поя- вяться на экран в рез-те действия этой программы. Если числа в
этих адресах стоящие до двоеточия увеличиваютя (от первого к последнему) на
еденичку, то это означает что на каждый блок выделен один параграф в куче =
16 байт.
Для получения этих адресов в отладчике достаточно нажать Alt+F4
(в режиме отладчика) затем в появившемся запросе ввести *x появится меню, вверху которого и будет нужный адрес, аналогично для *y, *z.
*/ return 0;
}
Задание №6
#include
#include
#include
#include
#include
//N_var - число элементов массива
#define N_var 20
main()
{
clrscr();
//Инициализация генератора случ. чисел
randomize();
int *mas;
//Выделение памяти под массив
if (!(mas=(int *)malloc(sizeof(int )*N_var)))
{
printf ("Не достаточно памяти для выделения массиваn");
exit (1);
}
//Заполнение массива случ. числами в диапазоне от -3 до 7 с
одновременным
//выводом на экран
for (int i=0;iptr)=(int *)malloc(sizeof(int)*(matr->m)*(matr->n))))
return 0; return 1;
}
int DinMatr2 (Matr2 *matr)
{ if (!(matr->ptr=(int **)malloc(sizeof(int *)*(matr->m)))) return
0; for (int i=0;im;i++)
{ if (!(matr->ptr[i]=(int *)malloc(sizeof(int)*(matr->n)))) return
0;
} return 1;
}
void FreeMatr1(Matr1 *matr)
{ if (matr->ptr) free (matr->ptr);
}
void FreeMatr2(Matr2 *matr)
{ for (int i=0;im;i++)
{ if (matr->ptr[i]) free(matr->ptr[i]);
} if (matr->ptr) free(matr->ptr);
}
Рекомендуем скачать другие рефераты по теме: реферат китай курсовые работы, бесплатные шпаргалки по праву.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата