산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 구조체 마스터하기: 정의, 변수, 접근 및 고급 예제

C 구조체 마스터하기

명확한 예제와 모범 사례로 C 구조체 정의, 생성, 사용법을 학습하세요.

C 구조체란 무엇인가?

struct(구조체)는 서로 다른 타입의 변수들을 하나의 이름으로 묶는 복합 데이터 타입입니다. C에서 복잡한 자료구조를 만드는 기초가 됩니다.


구조체 정의하기

구조체 타입의 변수를 생성하기 전에 타입을 정의해야 합니다. struct 키워드로 정의를 시작합니다:

struct structureName {
    dataType member1;
    dataType member2;
    …
};

예제:

struct Person {
    char name[50];
    int citNo;
    float salary;
};

이는 struct Person이라는 새 타입을 만듭니다. 이제 이 타입의 변수를 선언할 수 있습니다.


구조체 변수 생성하기

구조체 타입을 정의하는 것만으로는 메모리가 할당되지 않습니다. 변수를 선언하여 사용합니다:

struct Person {
    // 멤버들
};
int main() {
    struct Person person1, person2, p[20];
    return 0;
}

또는 정의와 변수 선언을 결합할 수도 있습니다:

struct Person {
    // 멤버들
} person1, person2, p[20];

구조체 멤버 접근하기

멤버를 읽거나 수정하는 두 연산자:

  1. . – 멤버 접근 연산자.
  2. -> – 구조체 포인터 멤버 연산자(별도 튜토리얼에서 다룸).

person2의 salary를 읽거나 수정하려면:

person2.salary

예제 1: C에서 구조체 사용

#include <stdio.h>
#include <string.h>
struct Person {
    char name[50];
    int citNo;
    float salary;
} person1;
int main() {
    strcpy(person1.name, "George Orwell");
    person1.citNo = 1984;
    person1.salary = 2500;
    printf("Name: %s\n", person1.name);
    printf("Citizenship No.: %d\n", person1.citNo);
    printf("Salary: %.2f", person1.salary);
    return 0;
}

출력

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

strcpy()가 고정 크기 char 배열에 문자열을 복사하는 이유는 대입 연산자를 배열에 직접 사용할 수 없기 때문입니다.


typedef와 구조체 사용

typedef 키워드는 타입 별칭을 만들어 선언을 단순화합니다:

typedef struct Distance {
    int feet;
    float inch;
} distances;
int main() {
    distances d1, d2;
}

typedef 없이 쓰면:

struct Distance d1, d2;

예제 2: 별칭 실전 활용

#include <stdio.h>
#include <string.h>
typedef struct Person {
    char name[50];
    int citNo;
    float salary;
} person;
int main() {
    person p1;
    strcpy(p1.name, "George Orwell");
    p1.citNo = 1984;
    p1.salary = 2500;
    printf("Name: %s\n", p1.name);
    printf("Citizenship No.: %d\n", p1.citNo);
    printf("Salary: %.2f", p1.salary);
    return 0;
}

출력

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

중첩 구조체

구조체는 다른 구조체를 포함할 수 있어 계층적 데이터 모델링이 가능합니다:

struct complex {
    int imag;
    float real;
};
struct number {
    struct complex comp;
    int integers;
} num1, num2;

num2의 imag를 11로 설정:

num2.comp.imag = 11;

예제 3: 중첩 구조체 실전

#include <stdio.h>
struct complex {
    int imag;
    float real;
};
struct number {
    struct complex comp;
    int integer;
} num1;
int main() {
    num1.comp.imag = 11;
    num1.comp.real = 5.25;
    num1.integer = 6;
    printf("Imaginary Part: %d\n", num1.comp.imag);
    printf("Real Part: %.2f\n", num1.comp.real);
    printf("Integer: %d", num1.integer);
    return 0;
}

출력

Imaginary Part: 11
Real Part: 5.25
Integer: 6

왜 C에서 구조체를 사용하는가?

사람의 이름, 시민권 번호, 급여를 저장해야 한다고 가정해 보세요. 구조체 없이 각 필드마다 별도 변수를 만들면 코드 중복과 혼란이 빠르게 발생합니다. 구조체는 관련 데이터를 하나의 논리적 단위로 캡슐화하여 더 깔끔한 코드와 쉬운 유지보수를 돕습니다.


다음 단계는?

C 언어

  1. C# Hello World – 첫 C# 애플리케이션 만들기
  2. C# 키워드와 식별자 이해: 규칙, 목록, 모범 사례
  3. C# 변수와 기본 데이터 타입 완벽 가이드
  4. C# 연산자 – C# 연산자 종합 가이드
  5. C# 비트 연산자와 시프트 연산자 완전 정복: 종합 가이드
  6. C# 기초: 입출력(Essential Input/Output) 완벽 가이드
  7. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  8. C# 주석 마스터하기: 종류, 모범 사례, XML 문서화
  9. C# switch 문 마스터하기: 문법, 예제, 모범 사례
  10. C# 삼항 연산자: 조건부 표현식을 간결하게 작성하는 법