프로그래밍/C++

[C++ 문법] 구조체

준코딩 2019. 4. 4. 23:42

C++ 문법

 

Struct

 

  개념부분은 내용을 조금씩 추가 할 예정입니다.

 

 

개념

 

 구조체는 관련있는 변수들을 모아서 하나의 새로운 변수 타입을 만들어주는 기능이다. 쉽게말해 사용자 정의 변수타입이라고 할 수있다.

 

 

배열과 구조체의 공통점

 

1. 데이터 집합이다.

2. 연속된 메모리 블럭에 할당된다.

- 따라서 structname 변수명 = {}; 와 같이 선언하면 구조체 안에 변수를 모두 0으로 초기화가 가능하다.

 

 

 

 

문법

 

<생성시>

sturct 구조체명 {}; 

 

<선언시>

구조체명 변수명 

 

<구조체안의 변수 사용시>

구조체명.변수명 

 

코드

: 클래스의 멤버변수 출력해보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# include <iostream>
 
#define NAME_SIZE 32
 
using namespace std;
 
struct Student
{
    char strname[NAME_SIZE];
    int iNumber;
    int iKor;
    int iEng;
    int iMath;
    int iTotal;
    float fAvg;
};
 
int main()
{
    Student Sstudent = {}; //모든 멤버변수 0으로 초기화
    Student SstudentArr[100= {};
 
    Sstudent.iKor = 100;
    strcpy_s(Sstudent.strname, "김현우");
    
    cout << "이름 : " << Sstudent.strname << endl;
 
 
 
    return 0;
}
 
cs



우선 #define 을 통해서 상수를 정의했는데, 반복적으로 같은 크기를 사용할 상수들은 이렇게 정의를 해놓는 습관을 들이는게 좋습니다. 예를들어 계속해서 100의 크기를 사용하는 배열을 사용하다가 이 배열의 크기를 바꿔야 하는 상황이 오면 #define 의 크기만 바꿔주면 편하니까요 ~

 

본론으로 넘어가서 이 구조체는 아주 ~ 간단한 구조체입니다. 구조체 안에는 모든 자료형의 변수를 선언 할 수있어요. 저렇게 선언을 하고 main에서 선언과 동시에 초기화를 해주었습니다. 이때 방식이 배열과 아주 유사하죠. int arr[100] = {}; 이런느낌 ? 그리고 배열로 선언도 가능합니다.

 

멤버변수에 접근을 할때에는 접근지정자 "." 를 사용합니다. 그리고 strcpy_s 의 설명은 여기에 있구요. 출력할떄에도 물론 "." 을 사용해서 원하는 멤버변수를 출력합니다 ~