어언 2년 전 C언어를 한달 배운 지식으로는 역시...문제를 푸는데 한계가 있다.
예상 문제를 풀면서 전혀 기억에 없는 부분들 잊지 않기 위해 다시 정리 해보자.
struct 구조체 이름 {
데이터타입 변수명;
};
구조체는 C언어에서 매우 자주 사용 되고 자료구조에서 LinkedList, Stack, Queue 등 다양하게 사용된다고 한다.
예) 구조체 선언하기
struct Boni {
int data;
Pointer p;
}
구조체는 main 함수에서 사용하기 위해서는 struct를 붙여야함
void main() {
struct Boni st; // 구조체 변수
struct Boni arr[5]; // 구조체 배열
struct Boni *p; // 구조체 포인터 변수
}
struct를 매번 붙이기 어려울 때는 typedef로 별칭을 줄 수 있다.
typedef struct Boni { // 구조체 선언
int data;
} bon; // 구조체 별칭
void main() {
bon st;
bon arr[5];
bon *p;
}
구조체의 포인터 변수는 일반 포인터 변수와 동일하게 생각하면 되고, 주소값(포인터값)을 p++; 하게 되면 연산하듯 주소값을 변경 시킬 수 있다!(Java만 공부해 온 나에게 센세이션!)
또한 일반적인 구조체 변수 값 출력 시에는 구조체명.구조체 변수의 형태를 가지지만 포인터 변수인 경우에는 구조체명->구조체 변수의 형태를 가진다.
// 일반 구조체 변수
printf("%s\n", st.name);
// 구조체 포인터 변수
printf("%s\n", p->name);
내가 풀었던 문제는 구조체 배열과 포인터 변수를 선언 후 구조체의 주소를 포인터 변수에 대입 후 p++을 통해 주소값을 1 증가 시켜 배열 내 값들을 출력하는 문제였는데....
다음에 같은 문제가 나온다면 잘 풀어야겠다.·´¯(>▂<)´¯
·.