easy software

C언어 구조체연산 본문

C언어/구조체

C언어 구조체연산

JAVA 웹개발자 2015. 2. 8. 17:38

구조체는 대입연산이 가능하고, 사칙연산은 불가능합니다.

 

그런데 이번에는 구조체의 덧셈연산을 해보려고 합니다.

 

기본적으로 덧셈연산이 허용되지 않는데, 어떻게 하면 될까요?

 

저는 구조체의 멤버들을 더해주는 함수를 구현해야겠다는 생각을 했습니다.

 

 

 

제가 구현하고 싶은 프로그램은,

 

먼저 사용자로부터 x좌표와 y좌표를 두개씩 입력받습니다.

 

그리고 입력받은 값을 구조체에 저장합니다.

 

후에 구조체의 덧셈연산을 수행한 후 결과를 출력해줍니다.

 

 

 

#include <stdio.h>

 

//x, y좌표를 표현하는 구조체
struct point{
     int xpos;
     int ypos;
};

 

//x, y좌표를 더해서 새로운 구조체 변수를 생성
point PointAdd(point a, point b){
     point result;

 

     result.xpos = a.xpos + b.xpos;
     result.ypos = a.ypos + b.ypos;

 

     return result;
}

 

int main(void){
     point first;
     point second;
     point result;
 
     printf("첫번째 x, y좌표를 입력해 주세요 : ");
     scanf_s("%d %d", &first.xpos, &first.ypos);

     printf("두번째 x, y좌표를 입력해 주세요 : ");
     scanf_s("%d %d", &second.xpos, &second.ypos);

 

     result = PointAdd(first, second);

     printf("첫번째와 두번째 좌표를 더한 값 : %d  %d \n\n", result.xpos,result.ypos);

 

     return 0;
}

 

 

프로그램의 흐름을 설명해드리겠습니다.

 

1. main함수에서 사용자로부터 두개의 x와 y좌표를 입력받아 구조체 first와 second에 저장합니다.

 

2. PointAdd라는 함수를 호출합니다.

 

3. PointAdd함수에서 구조체 두개를 인자로 전달받아, 각 구조체의 x좌표와 y좌표를 더한 값을

   새로운 구조체변수에 저장하여 return해줍니다.

 

4. 결과를 출력합니다.

 

 

 

위처럼 구조체의 사칙연산은 기본적으로 불가능하기 때문에,

 

함수를 따로 구현해서 연산을 하는 것이 공식화 되어 있습니다.

Comments