Напишите программу, которая выделяет память для одного объекта double
, используя размер типа, и для одного объекта long
, используя размер
указателя. Поместите значения в выделенные участки памяти и выведите эти значения на консоль. После этого освободите выделенную память.
#include <stdio.h> #include <stdlib.h> int main(void) { // выделяем память для одного объекта double double *p_double = malloc(sizeof(double)); if (p_double) { *p_double = 3.1415; printf("*p_double = %f\n", *p_double); } free(p_double); // выделяем память для одно объекта long long *p_long = malloc(sizeof *p_long); if (p_long) { *p_long = 32; printf("*p_long: %ld\n", *p_long); } free(p_long); }
Напишите программу, которая динамически выделяет память для массива из пяти чисел типа long
. Используя цикл for,
присвойте значения элементами массива и выведите их на консоль. После этого освободите память.
#include <stdio.h> #include <stdlib.h> int main(void) { // выделяем память для пяти объектов long int n = 5; long *p_long = malloc(5 * sizeof(long)); if (p_long) { for(int i = 0; i < n; i++) { p_long[i] = i + 1; printf("p_long[%d]: %ld\n",i, p_long[i]); } } free(p_long); }
Напишите программу, которая динамически выделяет память для массива из трех чисел типа long
. Используя цикл for,
присвойте значения элементами массива и выведите их на консоль.
Затем с помощью функции realloc()
увеличьте выделенную память до 5 элементов типа long
. Установите значения для новых двух элементов
long и выведите их на консоль. После этого освободите память.
#include <stdio.h> #include <stdlib.h> int main(void) { // выделяем память для трех объектов long int m = 3; long *ptr = malloc(m * sizeof(long)); if (ptr) { for(int i = 0; i < m; i++) { ptr[i] = i + 1; // устанавливаем значения printf("ptr[%d]: %ld\n",i, ptr[i]); } } // увеличиваем выделенную память до 5 объектов long int n = 5; long * ptr_new = realloc(ptr, n); if(ptr_new) { // устанавливаем и выводим значения для новых 2-х элементов for(int i = m; i < n; i++) { ptr_new[i] = i + 1; printf("ptr[%d]: %ld\n",i, ptr_new[i]); } free(ptr_new); } else { free(ptr); } }
Напишите программу, которая динамически выделяет память для массива. При этом длина массива неизвестна и вводится во время выполнения программы пользователем, и также значения всех элементов массива также вводятся пользователем.
#include <stdio.h> #include <stdlib.h> int main(void) { int *block; // указатель для блока памяти int n; // число элементов массива // ввод числа элементов printf("Size of array="); scanf("%d", &n); // выделяем память для массива block = malloc(n * sizeof(int)); // вводим числа в массив for(int i=0;i<n; i++) { printf("block[%d]=", i); scanf("%d", &block[i]); } printf("\n"); // вывод введенных чисел на консоль for(int i=0;i<n; i++) { printf("%d \t", block[i]); } // освобождаем память free(block); return 0; }