KPlay의 코딩 그리고 잡동사니

구조체(structure)은 하나 이상의 변수(포인터 변수와 배열 포함)을 묶어서

새로운 자료형을 정의하는 도구입니다.

가령, 내가 x좌표와 y좌표를 설정해줘야 하는데

두 변수는 '좌표'라는 특징으로 비슷하게 묶을 수 있죠.

이렇게 비슷한 특징을 가진 변수들을 묶어서 관리하기 쉽게 해놓은게 구조체입니다.

기본적인 정의형은

struct point // struct키워드로 구조체선언, point는 구조체의 이름

{

int xpos; // 구조체의 맴버(변수)

int ypos; // 구조체의 맴버(변수)

};

정의를 해봤으니 어떻게 쓰는지도 알아봐야겠죠

먼저 구조체의 이름은 그 자체로 int나 double같은 "자료형"이 됩니다.

다만 유저가 정의해준 자료형이죠

그래서 구조체 변수를 선언할때는

struct point pos1 = {1, 2} 이런식으로 정의해줍니다.

point가 자료형이고 pos1이 point자료형으로 만들어진 하나의 변수이며

pos1변수는 xpos와 ypos에 접근 할 수 있습니다.

.연산자를 이용하여 pos1.xpos / pos1. ypos같이

printf("%d %d", pos1.xpos, pos1.ypos); 를 출력하면

1과 2가 출력이 됩니다.

구조체 맴버에는 그냥 정수,실수형 변수뿐만 아니라 배열도 올 수 있습니다

예를들어,

struct person

{

char name[20];

char phoneNum[20]

};

struct person man1; 처럼 선언하게 되면

printf("%s %s", man1.name, man1.phoneNum);

을 출력이 가능합니다

2. 구조체 변수의 초기화

구조체 변수는 변수답게 선언과 동시에 초기화도 가능합니다

가령 struct point pos1 = {10 ,20}; 처럼 말이죠

3. 구조체 변수의 포인터

struct point pos1 = {10 ,20}; 이라는 구조체를 선언했다고 가정했을때

이 구조체의 포인터 변수로는

struct point * pptr = &pos; 로

이 포인터변수의 자료형이 구조체 변수라는 의미에서 앞에 struct point * 를 붙여주면 됩니다.

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band