신규 블로그를 만들었습니다!
1. 구조체란?
구조체는 서로 다른 자료형 또는 같은 자료형을 모아서, 새로운 자료형을 만들어서 사용하는 것이다.
예를들어, int형 double형 char형 등등 각각의 자료형을 모아서 하나의 자료형처럼 구조체를 만들어 사용한다.
구조체를 만들기 위해서는 정의하는 단계가 필요하다.
정의된 구조체를 구조체 변수를 통해 접근하여 사용할 수 있다.
(이는 java의 객체지향 개념과 비슷하다.)
구조체 선언을 할때는 2가지 방법을 이용하여 선언한다.
1-1.구조체 정의 후 구조체 변수 선언하는 방법
#include <stdio.h>
// 구조체 정의
struct MyStruct
{
char c;
int i;
};
int main(void) {
// 구조체 변수 선언
struct MyStruct myStruct1;
struct MyStruct myStruct2;
struct MyStruct myStruct3; // 이름은 원하는걸로..
return 0;
}
1-2. 구조체 정의와 구조체 변수 선언을 동시에 하는 방법
#include <stdio.h>
// 정의과 변수선언을 동시에 하는 방법
struct MyStruct1
{
char c;
int i;
} myStruct11, myStruct12, myStruct13;
int main(void) {
return 0;
}
2. 구조체안의 멤버(변수)에 접근하기 위한 방법
구조체안의 멤버 변수에 접근하기 위해서는 . (도트, 점)를 이용하여 접근 한다.
#include <stdio.h>
// 구조체 정의
struct MyStruct
{
char c;
int i;
};
int main(void) {
// 구조체 변수 선언
struct MyStruct myStruct1;
struct MyStruct myStruct2;
myStruct1.c = 'A';
myStruct2.c = 'B';
myStruct1.i = 10;
myStruct2.i = 20;
printf("myStruct1.c = %c\n", myStruct1.c);
printf("myStruct2.c = %c\n", myStruct2.c);
printf("myStruct1.i = %d\n", myStruct1.i);
printf("myStruct2.i = %d\n", myStruct2.i);
return 0;
}
3. 구조체 변수 초기화 및 복사
구조체 변수선언과 초기화를 동시에 하는 방법과 따로 나눠서 하는 방법이 있다.
3-1. 구조체 변수 선언과 초기화를 동시에 하는 방법
#include <stdio.h>
// 구조체 정의
struct MyStruct
{
char c;
int i;
};
int main(void) {
// 구조체 변수 선언
struct MyStruct myStruct1 = {'A', 10};
printf("myStruct1.c = %c\n", myStruct1.c);
printf("myStruct1.i = %d\n", myStruct1.i);
return 0;
}
3-2. 구조체 변수 선언과 초기화를 따로 나눠서 하는 방법
#include <stdio.h>
// 구조체 정의
struct MyStruct
{
char c;
int i;
};
int main(void) {
// 구조체 변수 선언
struct MyStruct myStruct2;
myStruct2.c = 'A';
myStruct2.i = 10;
printf("myStruct2.c = %c\n", myStruct2.c);
printf("myStruct2.i = %d\n", myStruct2.i);
return 0;
}
4. 중첩 구조체
구조체 안에 또 다른 구조체를 멤버로 만들 수 있다.
이렇게 구조체안에 들어가 있는 멤버 구조체를 중첩 구조체라고 한다.
#include <stdio.h>
struct MyStruct1
{
char c;
int i;
};
struct MyStruct2
{
char c;
int i;
};
struct MyStructAll
{
char c;
int i;
// 중첩 구조체
struct MyStruct1 ms1;
struct MyStruct2 ms2;
};
int main(void) {
struct MyStructAll ms;
ms.c = 'A';
ms.i = 10;
ms.ms1.c = 'B';
ms.ms1.i = 20;
ms.ms2.c = 'C';
ms.ms2.i = 30;
printf("ms.c = %c\n", ms.c);
printf("ms.i = %d\n", ms.i);
printf("ms.ms1.c = %c\n", ms.ms1.c);
printf("ms.ms1.i = %d\n", ms.ms1.i);
printf("ms.ms2.c = %c\n", ms.ms2.c);
printf("ms.ms2.i = %d\n", ms.ms2.i);
return 0;
}
관련 글
2018/02/06 - [Language/C] - C언어 :: 포인터와 함수, static #15
2018/02/07 - [Language/C] - C언어 :: 구조체와 배열, 구조체와 포인터 (-> 사용법) #17
'Language > C&C++' 카테고리의 다른 글
C언어 :: 공용체 (union) #18 (0) | 2018.02.07 |
---|---|
C언어 :: 구조체와 배열, 구조체와 포인터 (-> 사용법) #17 (0) | 2018.02.07 |
C언어 :: 포인터와 함수, static #15 (0) | 2018.02.06 |
C언어 :: 포인터와 배열, 포인터를 이용한 문자열 #14 (0) | 2018.02.06 |
C언어 :: 포인터란(Pointer), 포인터 변수의 선언과 초기화 #13 (0) | 2018.02.05 |
최근댓글