C

동적메모리할당함수 호출하기(방법2 : 더블 포인터를 이용한 call by address)

GOD03219 2017. 12. 29. 20:54

#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
void memoryalloc(int **pp);
void input(int*p);
void output(int*p);
void del(int*p);
void main()
{
 int *p;
 
 memoryalloc(&p);      // 포인터의 주소를 넘겨주기
 input(p);    
 output(p);    
 del(p);

    

}


void memoryalloc(int**pp)
{

 *pp=(int*)calloc(1,sizeof(int));
}


void input(int*p)
{
 printf("숫자를 입력하시오.(입력함수)\n");
 scanf("%d",p);

}


void output(int*p)
{
 printf("입력한 숫자가 나옵니다.(출력함수)\n");
 printf("%d\n", *p);

}


void del(int*p)
{
 free(p);
}

 

/*

동적메모리 할당 함수로 void 함수를 썼기 때문에 return을 하지 않는다. 대신 다차원포인터(더블포인터)사용 해서 포인터가 동적메모리를 계속 잡고 있는다.

*/