#include <stdio.h>
int pp1(int *p1)
{
 return *p1; 
 }

int pp2(int *p2)
{
 return p2; 
           
}

int pp3(int p3)
{
 return p3;
}

 

int main()
{
 int p=3,*pp=&p;
 puts(\"-------put address---------\");
 printf(\"pp1(*int)->return *int %d\\npp2(*int)->return int  %d\\npp3( int)->return int  %d\\n\",pp1(pp),pp2(pp),pp3(pp));
 puts(\"-------put int-------------\");
    printf(\"pp1(*int)->return *int error!\\npp2(*int)->return int  %d\\npp3( int)->return int  %d\\n\",pp2(p),pp3(p));
 puts(\"--------------------\");
 printf(\" p : %d\\n&p : %d\\n*p : error!\\npp: %d\\n&pp: %d\\n*pp: %d\\n\",p,&p,pp,&pp,*pp);
 return 0;
}


-----------------------------------------------------------------------
내가 한번 짜봣어..
물론 미흡해보이겠지만,  포인터 개념정리하는 형들은
이거보면서 아! 하고  감을 어느정도 잡기를 바랄께 ㅋㅋ