-
C언어 구조체의 기본Visual Studio/C 기초 2012. 9. 6. 00:18
구조체 하니까 위엄이 느껴지지 않습니까? 매우 중요합니다. 이 글을 읽고 많은 내용 알아가셨으면 좋겠습니다.
구조체의 정의와 선언
구조체는 여러 개의 변수를 쉽게 사용할 수 있도록 하나의 이름으로 묶은 하나 이상 변수들의 집합입니다. 구조체의 장점은 여러가지 데이터 형을 포함할 수 있습니다.
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;
long area;struct leng{
int x;
int y;
};
struct rectangle{
struct leng topleft; //왼쪽 위
struct leng bottomrt; //오른쪽 위
}box;
main(){
printf("왼쪽 위의 x좌표를 입력해주세요 : ");
scanf("%d",&box.topleft.x); //구조체 멤버 연산자인 마침표(.)를 이용해 연결해줍니다.printf("왼쪽 위의 y좌표를 입력해주세요 : ");
scanf("%d",&box.topleft.y);printf("오른쪽 위의 x좌표를 입력해주세요 : ");
scanf("%d",&box.bottomrt.x);printf("오른쪽 위의 y좌표를 입력해주세요 : ");
scanf("%d",&box.bottomrt.y);width = box.bottomrt.x - box.topleft.x; // 오른쪽 위의 x좌표 - 왼쪽 위의 x좌표
length = box.bottomrt.y - box.topleft.y; // 오른쪽 위의 y좌표 - 왼쪽 위의 y좌표
area = width * length;
printf("이 영역의 넓이 : %d\n", area);
}결과
입력한 숫자는 제가 임의로 넣은 숫자입니다.
다음엔 구조체 안에 배열을 선언해보겠습니다.
'Visual Studio > C 기초' 카테고리의 다른 글
C언어 구조체 멤버로 사용되는 포인터 (0) 2012.09.07 C언어 구조체와 배열 (0) 2012.09.06 C언어 문자와 문자열, 문자열과 포인터, malloc() (0) 2012.09.05 C언어 포인터 연산 (Pointer arithmetic) (0) 2012.09.05 C언어 포인터(pointer) (3) 2012.09.03