구조체(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 * 를 붙여주면 됩니다.
파일의 스트림(Stream), 입출력 (0) | 2020.10.04 |
---|---|
10. 구조체 변수의 typedef 선언 (0) | 2020.10.04 |
8. 기타 C언어의 여러 함수들 (0) | 2020.10.04 |
7. 문자, 문자열 입출력 함수 (0) | 2020.10.04 |
6. 함수 포인터와 void 포인터 (0) | 2020.10.04 |