@Facepunch

Как реализовать выделение памяти (malloc) через функцию?

Не могу понять как реализовать выделение памяти через функцию. Указатель передал, а что с ним делать - непонятно.
void Test(int *a){
	*a = (int*)malloc(1 * sizeof(int));
}
int main(){
	int *a = NULL;
	setlocale(LC_ALL, "Russian");
	//a = (int*)malloc(1 * sizeof(int));
	Test(a);
	if (a==NULL){
		printf("\nМассива нет!");
	} else printf ("\nМассив есть!");
	free(a);
	getch();
	return 0;
}
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
Чтобы менять значение передаваемого элемента нужно передавать указатель на него - в данному случае передавать указатель на указатель :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
int* test()
{
   return (int*)malloc(1 * sizeof(int));
}
Ответ написан
Комментировать
@querta
Чтобы в другой функции изменять значение переменной ( в нашем случае адрес на малок), нужно передать в нее адрес, т.е. указатель на указатель.

Test(&a);
А в функции Test() добавить * и &, или через переменную работать с двойным указателем
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы