C언어 구조체의 기본
구조체 하니까 위엄이 느껴지지 않습니까? 매우 중요합니다. 이 글을 읽고 많은 내용 알아가셨으면 좋겠습니다.
구조체의 정의와 선언
구조체는 여러 개의 변수를 쉽게 사용할 수 있도록 하나의 이름으로 묶은 하나 이상 변수들의 집합입니다. 구조체의 장점은 여러가지 데이터 형을 포함할 수 있습니다.
struct cordin {
int x;
int y;
}
이 것이 구조체 기본 구조입니다.
struct cordin { int x; int y; } 1st, 2nd; 이 문장은 구조체 cordin을 정의하고 cordin형 변수인 1st와 2nd라는 이름의 두 구조체를 선언합니다. 1st와 2nd는 구조체형 변수입니다. struct cordin 1st, 2nd; 라고 정의할 수도 있습니다. 구조체 멤버를 사용하는 방법 : 개별적인 구조체 멤버는 동일한 형태의 일반적인 변수와 마찬가지 방법으로 사용될 수 있습니다. 구조체 멤버는 구조체 멤버 연산자나 멤버연산자라고 하는 마침표를 사용하여 참조할 수 있습니다. 예를 들어 1st라는 이름의 구조체가 x=50, y=100의 값으로 표현하기 위해서 1st.x=50; 2nd.y=100; 같은 문장을 사용할 수 있습니다. 1st=2nd; 이 문장은 1st.x = 2nd.x; 1st.y = 2nd.y; 와 같은 뜻을 가집니다. 간단한 예제를 들어보겠습니다. 시 분 초를 구분하는 구조체입니다. struct time{ int hours; int minutes; int seconds; }time_of_birth{8,45,0}; // 배열과 비슷하죠? 배열은 하나의 데이터형만을 표현할 수 있지만 구조체는 여러 데이터형을 한꺼번에 다룰 수 있다는게 장점입니다. 구조체를 가지는 구조체 앞에서 말씀드렸듯이 C언어의 구조체는 모든 데이터형을 포함할 수 있습니다. 구조체 안에 구조체가 들어갈 수 있기도 합니다.(우엑) 사각형의 좌표 값을 읽어들이고 사각형의 면적을 계산하여 출력하는 프로그램입니다. 예제를 보겠습니다.
#include <stdio.h> int length, width; struct leng{ printf("왼쪽 위의 y좌표를 입력해주세요 : "); printf("오른쪽 위의 x좌표를 입력해주세요 : "); printf("오른쪽 위의 y좌표를 입력해주세요 : "); width = box.bottomrt.x - box.topleft.x; // 오른쪽 위의 x좌표 - 왼쪽 위의 x좌표
long area;
int x;
int y;
};
struct rectangle{
struct leng topleft; //왼쪽 위
struct leng bottomrt; //오른쪽 위
}box;
main(){
printf("왼쪽 위의 x좌표를 입력해주세요 : ");
scanf("%d",&box.topleft.x); //구조체 멤버 연산자인 마침표(.)를 이용해 연결해줍니다.
scanf("%d",&box.topleft.y);
scanf("%d",&box.bottomrt.x);
scanf("%d",&box.bottomrt.y);
length = box.bottomrt.y - box.topleft.y; // 오른쪽 위의 y좌표 - 왼쪽 위의 y좌표
area = width * length;
printf("이 영역의 넓이 : %d\n", area);
}
결과
입력한 숫자는 제가 임의로 넣은 숫자입니다.
다음엔 구조체 안에 배열을 선언해보겠습니다.