이번 파트에서는 진짜 엄청 중요한 구조체 를 정리할 것이다!
구조체 : 하나 이상의 변수( 포인터 , 배열 포함)들을 묶어서 새로운 자료형을 정의하는 도구
구조체를 이용하면 우리는 새로운 자료형을 정의할 수 있다.
그러면 구조체가 어디에 필요할지 한번 생각해보자 ,
예를들어 위치의 정보를 담는 프로그램을 개발한다고 가정해보자.
위치라는 것은 좌표의 개념으로 x , y 축의 좌표들의 정보를 알아야한다.
그러면 다음과 같이 2개의 변수를 선언해야 한다.
int xpos; // x좌표
int ypos; // y좌표
그런데 이 두 변수들은 서로 독립된 정보를 표현하는 것이 아닌 위치리는 하나의 정보를 표현하기 위해 사용되어야 한다.
즉 , 만일 위치를 출력하는 함수가 있다면 그 함수는 x좌표와 y좌표에 저장된 값을 동시에 참조해야 한다.
이 두 변수의 값은 함께 있을때 의미를 지니며 , 이 중 하나가 소멸되면 나머지 하나도 의미가 없어져 버린다.
이렇게 어느 데이터를 표현하기 위해 여러 관련된 변수들을 묶어놓을수 있도록 자료형을 정의하는것이 구조체이다.
다음과 같이 구조체를 정의함으로써 두 변수를 하나로 묶을수 있다.
struct point // point라는 이름의 구조체 정의
{
int xpos; // point 구조체를 구성하는 멤버 xpos
int ypos; // point 구조체를 구성하는 멤버 ypos
};
보이듯 생각보다 간단하다 , 이때 point라는 이름이 int나 double같이 자료형의 이름이 되는 것 이다.
이번엔 사람의 이름 , 핸드폰 번호 , 나이 등 사람의 정보에 대한 data를 묶는 자료형을 예시로 보겠다.
struct person // person이라는 이름의 구조체 정의
{
char name[20]; // 이름 저장을 위한 멤버 name
char phoneNum[20]; // 핸드폰 번호 저장을 위한 멤버 phoneNum
int age; // 나이 저장을 위한 멤버 age
}
위 구조체 정의를 보듯 , 배열도 값의 저장이 가능하기때문에 구조체의 멤버가 될 수 있다.
앞서 우리는 point와 person이라는 구조체를 정의하였다.
자료형을 정의하였으니 이제는 이 자료형들을 대상으로 변수를 선언해보자!
struct point pos; // point구조체의 변수 pos 선언
struct person man; // person구조체의 변수 man 선언
pos와 man을 '구조체 변수'라고 한다.
선언법은 다음과 같다. struct 구조체명 구조체변수명
위와 같이 구조체 변수들을 선언하면 다음의 형태를 지닌다.
pos
xpos |
ypos |
man
name |
phoneNum |
age |
다음과 같이 pos라는 구조체 변수는 xpos와 ypos로 이루어져있고 , man이라는 구조체 변수는 name , phoneNum , age 로 이루어져있다.
그렇다면 구조체 변수의 멤버에 접근법을 알아보자
만일 pos구조체 변수의 xpos라는 멤버에 20이라는 값을 저장하고 싶다면 다음과 같이 문장을 구성한다.
pos.xpos = 20; //구조체 변수 pos의 멤버 xpos에 20 저장
이렇게 구조체 변수의 멤버에 접근할때는 .(Dot) 연산자를 이용한다.
그러면 지금까지 설명한 내용을 기반으로 다음 글에서 구조체 예제를 공부해보자
'Programming > C Language' 카테고리의 다른 글
typedef 선언 (0) | 2017.11.01 |
---|---|
구조체 예제 (0) | 2017.11.01 |
문자,문자열 관련 함수 (0) | 2017.11.01 |
다차원 배열 (0) | 2017.11.01 |
Call By Value & Call By Reference (0) | 2017.11.01 |