Общая динамическая память для разных функций - C (СИ)
Формулировка задачи:
Ниже код, ожидал, что адреса будут одинаковые, но это не так, хочу выделить память в одной функции, а использовать в другой.
#include <stdio.h> #include <stdlib.h> void mema(int* c,void* p) { *c=10; p=malloc(*c); printf("address=%p\n",p); } int main() int c; void* p; mema(&c,p); printf("address=%p\n",p); free(p); return 0; }
Пропущенная скобка после строки с main суть не меняет.
Решение задачи: «Общая динамическая память для разных функций»
textual
Листинг программы
int* mema(int* c) { *c=10; int* p=malloc(*c*sizeof(int)); return p; } int main() { int c; void* p; p=mema(&c); printf("address=%p\n",p); free(p); return 0; }
Объяснение кода листинга программы
- В функции
mema
выделяется динамическая память с помощьюmalloc
с указанием размера памяти в*c
элементов. - В функции
main
создается переменная типаint
с именемc
. - В функции
main
вызывается функцияmema
с передачей адреса переменнойc
в качестве аргумента. - В функции
mema
значение переменнойc
изменяется на 10. - В функции
main
выводится адрес выделенной памяти с помощью функцииprintf
. - В функции
main
освобождается выделенная память с помощью функцииfree
. - В функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д