C++프로그래밍

2013.04.17_구조체 포인터변수사용

성엽이 2013. 4. 17. 16:40

▶ 구조체 포인터 변수


#include < stdio.h >
#include < math.h >

typedef struct
{
  int x;
  int y;  
}POINTER;
  
double distance(POINTER *p1, POINTER *p2);
      // 아무리 구조체의 byte 수가 많아져도 포인터를 사용하면
      // 4 byte 씩만! 사용하므로 상당히 효율적이다!


int main()
{
  POINTER p1;
  POINTER p2;

  printf("please enter x & y coordinate : ");
  scanf("%d   %d"&p1.x, &p1.y);
  printf("please enter x' & y' coordinate : ");
  scanf("%d   %d"&p2.x, &p2.y);

  printf("distance : %6.3f\n", distance( &p1, &p2 ));

  return 0;
}


double distance(POINTER *p1, POINTER *p2)
{
  int square1;
  int square2;
  
  square1 = (p2->x-p1->x)*(p2->x-p1->x);
  square2 = (p2->y-p1->y)*(p2->y-p1->y);
  return(sqrt(square1 + square2));

}
  
 



 Exp : 구조체안에 있는 변수를 사용하려면 st1이 일반적인 변수라면 도트연산자(.) 아래의

ex) st1.age = 20; 

이런식으로 쓰지만 일반적인 변수가 아닌 포인터변수를 사용하면 화살표로찝어준다는 느낌으로 

화살표를 쓴다.(->)

ex) st1->age = 20; 

화살표를 도트로 쓰려면 (*st1).age = 20; 으로 써도 똑같다.


--------

9_8.c

--------