C언어/구조체와 사용자 정의 자료형

// 구조체 멤버의 연산.

빛나는 미래 2010. 5. 19. 21:37

#include<stdio.h>
/*
struct simple
{
 int data1;
 int data2;
};

swap(struct simple  *i,struct simple *j)//구조체 포인터로 받는다.
{
 struct simple temp=*i;  // 맴버 값 바꿀시 임시 구조체도 같은구조체롤 선언하여 형 일치 시킴
  *i=*j;
 *j=temp;

}
int main()
{
 struct simple p1={1,2};// 객체의 선언및 초기화
 struct simple p2={3,4};

 swap(&p1,&p2);  // 객체의 주소값을 인자로 전달하여야 콜바이 레퍼런스 의미!!
 
 printf("p1.data1=%d p1.data2=%d\n",p1.data1,p1.data2);  // 결과값 출력
 printf("p2.data1=%d p2.data2=%d",p2.data1,p2.data2);

 return 0;
}
*/

//  문제2 구조체 멤버내 연산 콜바이 밸류
struct simple
{
 int x;
 int y;
};

struct simple add(struct simple i,struct simple j)// 인자를 구조체의 변수로 받는다=콜바이밸류의특징,.
{
 struct simple sum={(i.x)+(j.x),(i.y)+(j.y)}; // 임시 구조체의 선언과 동시에 값의 연산하여 초기화 시킴
 return sum;// 객체를 리턴하여 반환시킨다.
}


int main()
{
 struct simple p1;
 struct simple p2;
 struct simple result;// 결과 값을 받을 같은 크기의 구조체 선언
 puts("p1의 좌표(x, y)입력:");
 scanf("%d %d",&(p1.x),&(p1.y));// 구조체의 인자값을 입력 받는다 (p1좌표 x,y)

 puts("p2의 좌표(x, y)입력:");
 scanf("%d %d",&(p2.x),&(p2.y));// 구조체의 인자값을 입력 받는다 (p2좌표 x,y)

 
 result= add(p1,p2);//좌표값을 넘겨받아 같은크기의 미리선언한 구조체로 받는다

 printf("sum.x=%d sum.y=%d\n",  result.x, result.y);// 결과값을 출력한다.


 return 0;
}