#include <stdio.h>

int main()
{
  int iNum;
  float *fP;
  iNum=3;
  fP=(float*)3; //포인터형은 int 형과 완전히 동일하다. (float*)을 붙이지 않게 되면 컴파일중 경고
                  메세지가 뜬다. fp는 주소이며 오른쪽은 정수이다. 컴파일러가 3이 정수인지 주소인지 
                  알수 없는데 3을 기본적으로는 정수로 인식한다.(float*)을 붙이면 캐스팅이 되어서
                  왼쪽, 오른쪽 이 주소값이 된다.
  
  printf("%d\n",iNum);
  
  printf("%d\n",fP);
  return 0;
}



#include <stdio.h>

int main()
{
  int iNum;
  int *iP1;
  int *iP2;
  iNum=100;
  
  iP1=&iNum;
  iP2=(int*)0xBFFFFA08; //iNum의 주소값을 16진수로 표현한 것 이다. iP2가 인트 포인터형 이기 때문에 
                          (int*)을 사용해서 캐스팅하여 형을 같게 만들었다.
  
  //7*iNum; 포인터형 앞에 *를 쓸수 있다 
 
  
  *iP1; //*iP1은 간접참조라고 하여 iP1이 가리키는 주소(iNum의 주소)의 값을 나타낸다.
  
  printf("%d\n",iNum);
  printf("iNum address: %08X\n",&iNum);
  printf("iP1 value: %08X\n",iP1);
  printf("*iP1 value: %d\n",*iP1);
  printf("iP2 value: %08X\n",iP2);
  printf("*iP2 value: %d\n",*iP2);
  return 0;
}





#include
 <stdio.h>

int main()
{
  int A;
  int B;
  int C;
  int D;
  float E;
  float F;
  float G;
  float H;
  short I;
  char J;
  int *K;
  char L;
  char *M;
  
  printf("%p\n",&A);
  printf("%p\n",&B);
  printf("%p\n",&C);
  printf("%p\n",&D);
  printf("%p\n",&E);
  printf("%p\n",&F);
  printf("%p\n",&G);
  printf("%p\n",&H);
  printf("%p\n",&I);
  printf("%p\n",&J);
  printf("%p\n",&K);
  printf("%p\n",&L);
  printf("%p\n",&M);
  
  return 0;
}
 0xBFFFF9EC    M(char *)
 0xBFFFF9F3    L(char)
 0xBFFFF9F4    K(int *)
 0xBFFFF9F9    J(char)
 0xBFFFF9FA    I(short)
 0xBFFFF9FC    H(float)
 0xBFFFFA00    G(float)
 0xBFFFFA04    F(float)
 0xBFFFFA08    E(float)
 0xBFFFFA0C    D(int)
 0xBFFFFA10    C(int)
 0xBFFFFA14    B(int)
 0xBFFFFA18    A(int)