신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

1. 구조체와 배열

구조체안에는 멤버 변수로 배열을 사용 할 수 있다.

 

struct MyStruct

{

int num[10];

int i;

char c;

};

 

#include <stdio.h>
 
struct MyClass {
    // 배열 또한 사용이 가능 하다.
    char teacher[20];
 
    // 일반 변수
    int totalScore;
};
 
int main(void) {
 
    struct MyClass mc1 = { "hongku", 300 };
    struct MyClass mc2 = { "minsu", 500 };
 
    printf("mc1.teacher = %s\n", mc1.teacher);
    printf("mc1.totalScore = %d\n", mc1.totalScore);
 
    printf("mc2.teacher = %s\n", mc2.teacher);
    printf("mc2.totalScore = %d\n", mc2.totalScore);
 
    return 0;
}
​

 

 

 

 

또, 구조체 변수를 배열로 만들어서 사용 할 수도 있다.

예를들어,

 

struct MyStruct ms[3] = {

{'A', 10},

{'B', 20}

};

 

#include <stdio.h>
 
struct MyClass {
    // 배열 또한 사용이 가능 하다.
    char teacher[20];
 
    // 일반 변수
    int totalScore;
};
 
int main(void) {
 
    // 구조체 배열
    struct MyClass mc[2] = {
        {"hong", 400},
        {"hongku", 600}
    };
 
    printf("mc[0].teacher = %s\n", mc[0].teacher);
    printf("mc[0].totalScore = %d\n", mc[0].totalScore);
 
    printf("mc[1].teacher = %s\n", mc[1].teacher);
    printf("mc[1].totalScore = %d\n", mc[1].totalScore);
 
    return 0;
}
​

 

 

 

 

2. 구조체와 포인터

배열과 같이 구조체안 멤버로서 포인터를 사용할 수 있다.

 

#include <stdio.h>
 
struct DateStruct {
    int* day;
    int* month;
    int* year;
};
 
int main(void) {
 
    int day = 7;
    int month = 2;
    int year = 2018;
 
    // 구조체 변수 선언과 초기화
    struct DateStruct ds = {&day, &month, &year};
 
    printf("ds : *year, *month, *day = %d-%d-%d\n", *ds.year, *ds.month, *ds.day);
 
    return 0;
}​

 

 

 

또, 구조체 변수를 포인터로 사용할 수도 있다. 

포인터 구조체에서는 멤버변수에 접근 할 때 ->를 이용하여 접근한다.

아래 코드를 통해 -> 사용법에 대해 알아보자

 

#include <stdio.h>
 
struct DateStruct {
    char date[20];
};
 
int main(void) {
 
    // 일반 구조체
    struct DateStruct ds = { "2018-02-07" };
 
    // 포인터 구조체
    struct DateStruct* pds = NULL;
    pds = &ds;
 
    // 데이터 값을 불러올때 -> 를 이용해서 불러온다.
    printf("pds->date = %s\n", pds->date);
 
    return 0;
}
​

 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기