구조체(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. 구조체는 배열을 멤버로 가질 수 있는가?
'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글
구조체(6-1) 구조체의 배열 예제 (0) | 2021.02.06 |
---|---|
구조체(6) 구조체의 배열 (0) | 2021.02.06 |
구조체(4-1) 구조체를 멤버로 가지는 구조체 예제 (0) | 2021.02.06 |
구조체(4) 구조체를 멤버로 가지는 구조체 (0) | 2021.02.06 |
구조체(3-4) 구조체를 이용하여 두 점 사이의 거리를 계산해보자 (0) | 2021.02.06 |