[C] 구조체

2021. 9. 8. 16:59·C/문법

#구조체

쉽게 이야기 하면, "변수를 모아둔 박스"

 

배열과 구조체의 차이점

--> 구조체는 다른 자료형들을 하나로 묶어서 사용할 수 있다

구조체 정의 방법

1. struct 키워드 사용

struct 구조체이름
{
		자료형 멤버변수이름1;
		자료형 멤버변수이름2;
		...
};

struct 키워드 뒤에 구조체 이름을 지정하고, 중괄호 안에 변수를 선언한다.

이때, 구조체 안에 들어있는 변수를 '멤버'라고 부른다.

* 중괄호 뒤에 세미콜론(;) 잊지 않기! *

 

구조체를 정의한 후에는 선언해줘야 한다.

// 선언 시 초기화
struct 구조체이름 변수이름 = { 변수값1, 변수값2, ... };

// 선언 후 값 할당
struct 구조체이름 변수이름;
변수이름.멤버변수이름1 = 변수값1;
변수이름.멤버변수이름2 = 변수값2;
...

 

구조체 변수는 점(.)을 이용해서 멤버에 접근한다.

예시)

#define _CRT_SECURE_NO_WARNINGS    
#include <stdio.h>

struct Person
{
    char name[10];
    char id[20];
    int age;
};

int main(void)
{
    struct Person person;
    printf("이름: ");
    scanf("%s", person.name); //홍길동
    printf("학번: ");
    scanf("%s", person.id);   //201511156
    printf("나이: ");
    scanf("%d", &person.age); //25
    printf("%s씨는 %d세 이고, 학번은 %s 입니다.", person.name, person.age, person.id);
    return 0;
}

 

2. typedef struct 사용

typedef struct 구조체이름 {
    자료형 멤버변수이름1;
	자료형 멤버변수이름2;
} 구조체별칭;

구조체 변수를 선언할 때 일일히 struct 키워드를 붙이지 않기 위해 typedef로 구조체를 정의하고, 별칭을 지정해야 한다.

구조체 이름과 구조체 별칭은 같아도 되지만, 보통 구조체 이름은 "_구조체별칭"으로 사용한다.

 

구조체 선언은 다음과 같이 한다.

구조체별칭 변수이름 = {변수값1, 변수값2, ...};

 

예시)

#define _CRT_SECURE_NO_WARNINGS    
#include <stdio.h>

typedef struct _Person
{
    char name[10];
    char id[20];
    int age;
} Person ;

int main(void)
{
    Person person;
    printf("이름: ");
    scanf("%s", person.name); //홍길동
    printf("학번: ");
    scanf("%s", person.id);   //201511156
    printf("나이: ");
    scanf("%d", &person.age); //25
    printf("%s씨는 %d세 이고, 학번은 %s 입니다.", person.name, person.age, person.id);
    return 0;
}

 

'C > 문법' 카테고리의 다른 글

[C] 함수 포인터  (0) 2021.09.14
[C] 2차원 배열 + 이중포인터  (0) 2021.09.13
[C] 이중포인터  (0) 2021.09.10
[C] 2차원 배열  (0) 2021.09.10
[C] 기초  (0) 2021.09.03
'C/문법' 카테고리의 다른 글
  • [C] 2차원 배열 + 이중포인터
  • [C] 이중포인터
  • [C] 2차원 배열
  • [C] 기초
Rix
Rix
  • Rix
    The Nights
    Rix
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (106)
      • 알고리즘 (5)
        • Python (1)
        • C++ (6)
      • CS (0)
      • Backend (20)
        • 로드맵 (1)
        • Java (17)
        • Spring (2)
      • TIL (0)
      • Flutter (13)
      • Python (7)
        • 디스코드 챗봇 (1)
        • 문법 (1)
        • 머신러닝 (2)
      • C (28)
        • 문법 (19)
      • ETC (2)
        • Git (2)
        • GitHub (1)
        • Hacking (4)
      • Game (13)
        • Unity (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1152
    nullsafety
    백준
    이중포인터
    절대강좌유니티
    미로찾기
    TensorFlow
    C
    1546
    C심화
    공백포함
    Unity
    2차원 배열
    DART
    문자열 함수
    Failed to create GICache
    이미지분류
    코뮤니티
    콘솔창
    c언어
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
Rix
[C] 구조체
상단으로

티스토리툴바