구조체(5) 구조체 변수의 대입과 비교
구조체(5)
다른 자료형의 변수들은 대입 연산, 비교 연산들을 할 수 있다.
그렇다면 구조체 변수는 어떨까? 분명 구조체도 자료형이라고 이해했는데?
답은, 구조체를 다른 구조체에 대입하는 것은 가능하다.
즉 하나의 구조체 변수에 들어있는 자료들을 다른 구조체 변수로 복사할 수 있다.
이것이 개별 변수들을 사용하는 것보다 구조체를 사용하는 것이 편리한 이유인데,
다음 예제 문장을 봐보자
ex :
struct point
{
int x;
int y;
};
struct point p1 = {10, 20};
struct point p2 = {30, 40};
해석
위의 문장은 2차원 공간에서 점의 위치를 나타내는 구조체를 선언한 것이다.
위에서 p2 = p1; 처럼 하나의 구조체를 다른 구조체로 대입하는 연산이 가능하다.
p2 = p1; 문장을 실행하면 p1과 p2의 좌표값이 10 , 20으로 같아진다.
이제 제대로 이해해보자
ex :
p2 = p1;
p2.x = p1.x;
p2.y = p2.y;
위의 두개 문장은 서로 같은 의미이다.
만약 많은 멤버 변수를 가지는 구조체라면 이러한 대입 연산을 사용하면 많은 시간을 절약할 수 있다.
그러나 구조체 변수와 구조체 변수를 서로 비교하는 것은 허용되지 않는다.
예를 들어 if문으로 구조체 변수를 비교하려면
ex :
if((p1.x == p2.x) && (p1.y == p2.y))
{
printf("p1과 p2이 같습니다.");
}
-
위의 예시 문장처럼 구조체 변수를 비교하려면
구조체의 멤버마다 별도의 비교 수식을 적어줘야 한다.
-
※ 복습 차원에서 문제 ※
1. 구조체의 변수끼리 허용되는 연산에는 뭐가 있는가?
2. 구조체 태그와 구조체 변수의 차이점이 무엇인가?
3. 구조체 멤버로 구조체를 넣을 수 있는가?
4. 구조체는 배열을 멤버로 가질 수 있는가?