※ 주의 사항 ※ 이 글의 목적은 '지식의 전달'이 아닌 '학습의 기록'입니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 구조체도 포인터를 가질 수 있고, 구조체를 배열로 만들 수도 있으며, 자기 자신을 호출하는 구조체도 만들 수 있습니다. 이번엔 이러한 구조체의 여러가지 활용법을 배웁니다. 또 구조체와 유사한 사용자 정의 자료형인 '공용체'와, 서로 연관된 상수를 모아 기호화된 이름으로 쓰는 '열거형'의 특징과 사용법을 배웁니다. 또 자료형 이름을 재정의하는 typedef에 대해서도 배웁니다. 구조체 변수는 그 안에 여러 개의 변수를 멤버로 가질 수 있으나 구조체 그 자체는 단지 하나의 변수입니다. 따라서 구조체 변수에 주소 연산자를 ..
주의 사항! 이 일지는 작성하고 있는 현시점, 공부와 병행하면서 작성되고 있습니다. 공부 중에 떠오른 생각이나 그때그때의 개념정리 같은 내용이 포함됩니다. 따라서 이 일지의 내용은 제가 공부하고 이해한 대로 작성되기 때문에 실제 사실과는 다를 수 있습니다 이번 시간은 '비트 필드 구조체'에 관한 내용입니다. 구조체가 int형 멤버를 10개 갖는다면 구조체 변수는 총 40바이트의 메모리를 할당합니다. 그런데 각 멤버에 저장하는 값이 0과 1뿐이라면 실제 사용하는 공간은 1비트뿐이므로 대부분의 공간을 낭비하게 됩니다. 이런 경우 '비트 필드 구조체'를 활용할 수 있습니다. 비트 필드 구조체는 멤버의 크기를 비트 단위로 설정할 수 있습니다. 바이트 단위로 멤버의 크기를 설정하던 기존 구조체와는 다릅니다. 비트..
주의 사항! 이 일지는 작성하고 있는 현시점, 공부와 병행하면서 작성되고 있습니다. 공부 중에 떠오른 생각이나 그때그때의 개념정리 같은 내용이 포함됩니다. 따라서 이 일지의 내용은 제가 공부하고 이해한 대로 작성되기 때문에 실제 사실과는 다를 수 있습니다 이번 시간은 '사용자 정의 자료형'에 관한 내용입니다. 변수가 많이 필요하면 주로 배열을 사용합니다. 하지만 변수들의 자료형이 다 다르다면 배열을 만들 수 없습니다. 그럴 때는 '구조체'를 사용합니다. 구조체가 무엇인지 바로 예제를 통해 확인해보겠습니다. #include struct student { int num; double grade; }; void main(void) { struct student s1; s1.num = 2; s1.grade = ..
끝말 잇기를 하는 프로그램을 만듭니다. 단어를 입력하고 이미 입력된 단어나 끝말 잇기가 되지 않는 단어는 확인하여 제외합니다. end를 입력하면 입력을 끝내고 그 동안 입력한 모든 단어를 차례로 출력합니다. 입력한 단어는 그 길에 맞는 동적 할당 영역에 저장하며 입력 가능한 단어 수는 최대 100개로 제한합니다. 실행결과는 다음과 같습니다. /* 실행결과 단어 입력 : apple 단어 입력 : elephant 단어 입력 : tiger 단어 입력 : rabbit 단어 입력 : tiger 이미 존재 하는 단어입니다. 단어 입력 : pineapple 단어 잇기가 불가능합니다. 단어 입력 : tomato 단어 입력 : end apple elephant tiger rabbit tomato */ 다음은 제가 작성한..
기부금 관리 프로그램을 만듭니다. 자선단체에 기부하는 사람들의 명단과 금액을 입력한 후에 평균 기부액을 출력합니다. 단, 기부하는 사람의 수는 제한이 없습니다. 이름으로 "end"를 입력하면 입력을 종료합니다. 실행결과는 다음과 같습니다. /* 실행결과 이름 : 홍길동 기부금 : 80 이름 : 이순신 기부금 : 230 이름 : 유관순 기부금 : 60 이름 : KOEY 기부금 : 850 이름 : end 1. 홍길동 80 2. 이순신 230 3. 유관순 60 4. KOEY 850 평균 기부액 : 305 */ 기부하는 사람의 수는 제한이 없으므로 기부하는 사람의 이름이나 기부금을 저장할 배열은 그 크기가 하드코딩되면 안 됩니다. 이를 동적 메모리 할당으로 해결합니다. 제가 작성한 코드는 아래와 같습니다. #i..
주의 사항! 이 일지는 작성하고 있는 현시점, 공부와 병행하면서 작성되고 있습니다. 공부 중에 떠오른 생각이나 그때그때의 개념정리 같은 내용이 포함됩니다. 따라서 이 일지의 내용은 제가 공부하고 이해한 대로 작성되기 때문에 실제 사실과는 다를 수 있습니다 이번 시간은 '동적 할당 저장 공간의 활용'에 관한 내용입니다. 동적 할당을 잘 사용하면 데이터 맞춤 프로그래밍이 가능해집니다. 문자열을 저장하기 위해 선언했던 char 배열을 예로 들어보겠습니다. 우리는 문자열을 저장하기 위해 지금까지는 다음과 같이 배열을 선언했습니다. char letters[80]; 위와 같이 선언된 배열에는 영문79자를 저장할 수 있습니다. 하지만 여기 입력하는 단어가 'bus'라면 나머지 할당된 공간이 너무나도 아깝습니다. 하지..