본문 바로가기
Language/C언어

C012_struct, 구조체에 대해

by OdOp 관리자 2023. 9. 14.
SMALL

구조체 정의 

//선언하기
struct 구조체이름{
    자료형 멤버이름;
};

//변수 선언하기
struct 구조체이름 변수이름;

위와 같이 구조체를 선언하는 것이 기본입니다.

 

익명 구조체 (typedef)

개발자님들께서 변수 'struct 구조체 이름'으로 일일이 변수를 만드는 것이 불편해서 익명 구조체를 만들었습니다. 

 

//선언하기
typedef struct _구조체 이름{
    자료형 멤버이름;
} 구조체 별칭;

//변수 선언하기
구조체별칭 변수이름;

typedef를 사용해 익명 구조체를 만듭니다.

이때 '_구조체 이름'과 '구조체 별칭'이름이 같아도 무관합니다. 

이렇게 하면 변수를 선언할 때 'struct 구조체 이름'으로 선언하지 않고 '구조체별칭'으로 구조체를 선언할 수 있게 됩니다. 

 

Person 구조체 사용하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>  
#include <string.h>  //strcpy 함수가 선언된 헤더 파일

struct Person {  //구조체 정의 
    char name[20];
    int age;
    char address[100];
};

int main()
{
    struct Person p1;  //구조체 변수 선언
    // 점으로 구조체 멤버에 접근하여 값 할당
    strcpy(p1.name, "홍길동");
    p1.age = 30;
    strcpy(p1.address, "서울시 용산구 한남동");
    //점으로 구조체 멤버에 접근하여 값 출력
    printf("이름: %s\n", p1.name);
    printf("나이: %d\n", p1.age);
    printf("주소: %s\n", p1.address);
    return 0;
}

Person이라는 구조체를 임의로 만들었습니다. 

위에서 설명드린 것과 같이 'struct Person p1;'으로 p1이라는 변수를 선언했습니다. 

p1.name, p1.address,  p1.age에 값을 할당해 줍니다.

strcpy에 대해 간단하게 설명해 드리겠습니다. 

strcpy(s1, s2)는 s1에 s2를 복사하여 붙여 넣는 함수입니다. 이때 return값은 s1입니다. 

 

Person 익명 구조체 사용하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>  
#include <string.h>  //strcpy 함수가 선언된 헤더 파일

typedef struct _Person {
    char name[20];
    int age;
    char address[100];
} Person;

int main()
{
    Person p1;  //구조체 별칭 Person으로 변수 선언

    strcpy(p1.name, "홍길동");
    p1.age = 20;
    strcpy(p1.address, "서울시 용산구 한남동");
    //점으로 구 조체 멤버에 접근하여 값 출력
    printf("이름: %s\n", p1.name);
    printf("나이: %d\n", p1.age);
    printf("주소: %s\n", p1.address);
    return 0;
}

위의 예제인 'Person 구조체 사용하기'와 거의 유사합니다. 

차이점은 이번에는 typedef를 이용하여 익명구조체를 사용한 것입니다. 

LIST

'Language > C언어' 카테고리의 다른 글

C014_구조체 정렬하기  (0) 2023.09.16
C013_구조체 포인터 사용하기  (0) 2023.09.15
C011_배열 사용하기  (0) 2023.09.13
C010_malloc사용하기  (0) 2023.09.12
C009_포인터에 대해(간단히)  (0) 2023.09.11