Изменение поля в структуре - C (СИ)
Формулировка задачи:
Допустим есть структура
И под эту структуру выделена память
Как мне заполнить значение *a?
struct tsp {
int *a;
} *new_tsp;tsp *new_tsp = (tsp*)malloc(sizeof(tsp));
Решение задачи: «Изменение поля в структуре»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
struct tsp
{
int *a;
};
int main(void)
{
struct tsp* ptr = NULL;
ptr = malloc(sizeof(*ptr));
ptr->a = malloc(sizeof(*(ptr->a)));
*(ptr->a) = 320;
printf("%d\n", *(ptr->a));
free(ptr->a);
free(ptr);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdlib.h и printf.h
- Объявление структуры tsp, которая содержит указатель на массив int
- Указатель на структуру tsp, ptr, инициализируется как NULL
- Выделение памяти под структуру tsp с помощью malloc
- Выделение памяти под массив int, на который указывает указатель a структуры tsp, с помощью malloc
- Значение массива int устанавливается равным 320 с помощью оператора присваивания
- Выводится значение массива int с помощью функции printf
- Выделенная память под массив int освобождается с помощью функции free
- Выделенная память под структуру tsp освобождается с помощью функции free
- Функция main возвращает 0, что означает успешный конец работы программы