[정보처리기사 실기] C언어 구조체와 구조체 포인터

bonnie·2021년 6월 24일
0

어언 2년 전 C언어를 한달 배운 지식으로는 역시...문제를 푸는데 한계가 있다.
예상 문제를 풀면서 전혀 기억에 없는 부분들 잊지 않기 위해 다시 정리 해보자.


구조체는 struct라는 키워드를 이용해서 정의한다.

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 증가 시켜 배열 내 값들을 출력하는 문제였는데....
다음에 같은 문제가 나온다면 잘 풀어야겠다.·´¯(>▂<)´¯·.

profile
괴발🐱개발🐶

0개의 댓글