본문 바로가기
programming language/C

[C언어] 14강 구조체

by Peter Choi 2023. 2. 26.
반응형

14강 구조체

 

구조체란 간단한 변수나 배열로는 나타내기 어려운 데이터들을 나타내는 방법

 

코드로 예를 들어 보면,

#include <stdio.h>

struct Point
{
    int x;
    int y;
}p1, p2, p3;

int main()
{
    p1.x = 100; p1.y = 0;
    p2.x = 0;   p2.y = 100;
    p3.x = 100; p3.y = 100;

    printf("%d %d\n", p1.x, p1.y);
    printf("%d %d\n", p2.x, p2.y);
    printf("%d %d\n", p3.x, p3.y);

    return 0;
}
이러한 구조체 멤버 변수 출력을 할 수 있을 것입니다. 
 
아래는 구조체 포인터를 가지고 출력하는 방법입니다.

 

위와 같이 여러 변수와 배열로 하나의 구조체를 선언할 수 있다.

 

여기서 아래와 같이 구조체의 변수를 직접 설정할 수도 있다

 

struct book mybook;

또한 구조체는 포인터와 함께 쓰일 수 있다

 

구조체의 초기화 방법은 다음과 같다

struct house apt = { .value = 251.00, .com="hyundai", .name="fruzio"};
//(예시)아파트의 가격, 시공사, 이름 등을 초기화

 

 

 

구조체란 간단한 변수나 배열로는 나타내기 어려운 데이터들을 나타내는 방법임

 

 

 

코드로 알아보면,

 

 

 

 

struct book //구조체 선언 -> 문자 배열 2개와 float형 변수 1개로 이뤄진 구조체

{

char title[MAXTITL];

char author[MAXAUTL];

float value;

};

//중괄호 사이의 변수들은 모두 멤버 변수

 

 

위와 같이 여러 변수와 배열로 하나의 구조체를 선언할 수 있다.

 

 

 

여기서 아래와 같이 구조체의 변수를 직접 설정할 수도 있다

 

 

 

struct book mybook;

또한 구조체는 포인터와 함께 쓰일 수 있다

 

 

 

구조체의 초기화 방법은 다음과 같다

 

struct house apt = { .value = 251.00, .com="hyundai", .name="fruzio"};

//(예시)아파트의 가격, 시공사, 이름 등을 초기화

 

 

구조체 포인터 

구조체 포인터는 말 그대로 구조체를 가리키는 포인터를 의미한다.

구조체에서 멤버 변수로 접근할 때는 .을 사용했지만 구조체 포인터에서 멤버 변수로 접근할 때는 -> 을 사용하면 된다.

#include <stdio.h>
#include <stdlib.h>

struct Point
{
    int x;
    int y;
};

int main()
{
    struct Point* p1 = malloc(sizeof(struct Point));
    struct Point* p2 = malloc(sizeof(struct Point));
    struct Point* p3 = malloc(sizeof(struct Point));

    p1->x = 100; p1->y = 0;
    p2->x = 0;   p2->y = 100;
    p3->x = 100; p3->y = 100;

    printf("%d %d\n", p1->x, p1->y);
    printf("%d %d\n", p2->x, p2->y);
    printf("%d %d\n", p3->x, p3->y);

    free(p1);
    free(p2);
    free(p3);

    return 0;
}

 

반응형

댓글