본문 바로가기
Game/C

구조체 개념1

by sseddi 2020. 6. 6.
728x90

구조체 

서로 다른 성격의 데이터를 그룹으로 묶어 새로운 의미를 부여하는 방법

 

예를 들자면

정보보호학과 학생들의 성적이 공개되었을 때 강의 별 학점은 모두 데이터이다.

성적 결과를 확인한 C프로그래밍 교수는 자신의 강의를 들은 학생들의 성적이 중요할 것이다.

따라서 C프로그래밍 수업의 성적을 기준으로 데이터를 그룹으로 묶어 관리한다.

그렇지만 학생들은 자신이 들은 강의 성적만을 묶어서 그룹으로 관리할 것이다.

이때 구조체를 사용한다고 할 수 있다. (너무 구구절절..)

 

구조체는 배열과 달리 다른 자료형이어도 묶어 사용할 수 있다는 장점이 있다.

 

typedef (type define)

긴 자료형을 define문처럼 내가 정해둔 이름으로 (변수는 아니지만 변수처럼) 사용할 수 있는 문법

ex) typedef unsigned short int USS; //unsigned short int형을 USS로 선언

     USS temp; //unsigned short int 대신 사용 가능 

 

장점 -> 데이터 크기에 변화가 생겼을 때 쉽게 대처 가능 define문의 장점과도 일치

                                                        ( 내가 선언한 이름만 변경하면 되니까 )

 

typedef 설명하는 이유는 밑에 ~.~

 

구조체 

struct [구조체 명]

{

    자료형1 변수 명1;

    자료형2 변수 명2;

              '

              '

              '

}

 

근데 구조체를 typedef와 함께 쓰면 매번 struct 안 적어도 변수들을 편리하게 선언 가능

 

왼쪽처럼 따로 선언하거나 오른쪽처럼 같이 선언

이때 선언한 Data는 변수이다. (=struct Student Data;)

 

구조체로 선언한 변수의 요소 사용

변수의 요소 사용하려면 .(요소지정연산자) 사용

구조체로 선언한 변수 초기화 방법

배열과 같이 중괄호 사용하면 된다.

 

게임과 관련된 예시를 들자면

적과 관련된 정보들을 구조체에 담을 때

ex : 적의 x좌표

ey : 적의 y좌표

state : 적의 상태 값(나타났다 사라졌다 하는거 bool형)

을 구조체에 담고 .으로 불러내서 사용(위의 사진처럼 사용~~)

 

지금은 구조체 사용하지 않아서 변수명도 약간 햇갈리고 그런데 프로그램이 커지고 코드가 길수록

구조체로 프로그램의 연관성을 주면 오류도 더 줄일 수 있고 더 간결하게 프로그래밍 할 수 있을 것 같다.

 

참고)

 http://www.yes24.com/Product/Goods/35094862

 

Do it! C 언어 입문

‘왜’ 쓰는지 모르면 의미 없다! 두 번 삽질하지 않게 도와주는 입문서!실무 20년 강의 10년, 현업 프로그래머가 원리부터 알려준다!결과만 알고 쓰는 사람은 원리를 알고 쓰는 사람을 절대 따라

www.yes24.com

https://www.youtube.com/watch?v=FPrhwGR4B2s

 

728x90

'Game > C' 카테고리의 다른 글

포인터 개념 1  (0) 2020.05.02

댓글