ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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);

            

    결과

     

    입력한 숫자는 제가 임의로 넣은 숫자입니다.

    다음엔 구조체 안에 배열을 선언해보겠습니다.

    댓글

Designed by Tistory.