반응형

구조체(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. 구조체는 배열을 멤버로 가질 수 있는가?

 

반응형

+ Recent posts