본문 바로가기
728x90

전체 글498

사용자 정의 자료형 - 예제 모음 목차구조체로 만드는 책구조체 비교이메일 메세지 1. 구조체로 만드는 책한번 구조체로 책을 만들어 봅시다. 책에 대한 정보는 제목, 저자, 출판연도, 평점 등으로 구성됩니다.구조체 book를 선언하고, printf로 출력해보세요. 입출력{총, 균, 쇠, Jared Diamond, 1997, 9.80}물론 다른 책을 사용해도 됩니다. 정답은 다음과 같아요.#define _CRT_SECURE_NO_WARNINGS #include //구조체 변수 정의struct book{ char name[100]; char author[100]; int date; float stats;};int main(void){ //구조체 변수 선언과 동시에 초기화 struct book b1 = { "총, 균, 쇠", "Jared D.. 2025. 6. 17.
포인터 - 예제 모음 목차실수 분리기배열 주소 출력 1. 실수 분리기실수를 받아서 정수부와 소수부로 분리하는함수 frac(double *pd)를 만들어서 테스트해봅시다.실수 입력은 scanf로 받으세요. 다만 double형이어야 해요. 입출력실수를 입력하시오: 3.1415 frac(3.141500)가 호출되었습니다. 정수부는 3 입니다. 소수부는 0.141500 입니다.정답은 다음과 같습니다. #define _CRT_SECURE_NO_WARNINGS #include void frac(double* pd);int main(void){ double inp; printf("실수를 입력하시오: "); scanf("%lf", &inp); frac(&inp); //입력받은 실수의 주소 전달 return 0;}void frac(doubl.. 2025. 6. 17.
변수의 영역과 데이터 공유 - 예제 모음 목차고급 계산기 1. 고급 계산기사칙연산을 지원하는 계산기 프로그램을 만들어봅시다.이때 각 계산은 함수를 이용해야 하며, 각 연산을 처리하는 함수가 사용된 횟수를 전역변수를 통해 기록하고 출력하세요. 입출력연산을 입력하시오: 1+3 덧셈 연산은 총 1번 실행되었습니다. 연산의 결과 : 4 연산을 입력하시오: 19+129 덧셈 연산은 총 2번 실행되었습니다. 연산의 결과 : 148 연산을 입력하시오: 134-123 뺄셈 연산은 총 1번 실행되었습니다. 연산의 결과 : 11 연산을 입력하시오: 123*120 곱셈 연산은 총 1번 실행되었습니다. 연산의 결과 : 14760 연산을 입력하시오: 123/12 나눗셈 연산은 총 1번 실행되었습니다. 연산의 결과 : 10 연산을 입력하시오:정답은 다음과 같아요. #.. 2025. 6. 17.
동적 할당 메모리 목차정적 메모리 할당동적 메모리 할당 malloc(), freecalloc(), realoc()구조체 동적 생성연결 리스트 1. 정적 메모리 할당 프로그램이 메모리를 할당받는 방법은 두 가지가 있습니다.그동안 사용된 정적(static)할당과, 여기서 학습할 동적(dunamic)할당이 존재합니다. 정적 할당은 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받습니다.예를 들어 배열 선언인 int score_s[100]; 같은게 있겠네요. 이 경우, 처음에 선언된 배열인 100을 넘어가는 입력이 들어온다면 처리하지 못합니다.반대로 더 작은 입력이 들어온다면 남은 메모리 공간은 낭비되게 됩니다. 2. 동적 메모리 할당 malloc(), free그럴 때 사용되는 것이 동적 메모리 할당입니다.동적 메모리.. 2025. 6. 14.
전처리 지시자 목차전처리기란?파일을 포함하는 #include매크로를 정의하는 #define조건부 컴파일 지시자 #ifdef, #endif조건부 컴파일 지시자 #if, #else다중 소스 파일비트 필드 구조체 1. 전처리기란?이거 2-1장에서 나왔던건데 이제야 배우는군요..전처리기(peprocessor)는 컴파일하기 앞서서 소스 파일을 처리하는 컴파일러의 한 부분입니다.이 부분은 #define, #include 등만 처리해요.전처리기의 지시어는 다음과 같은 부분이 존재합니다.지시어의미#define매크로 정의#include파일 포함#undef매크로 정의 해제#if조건이 참일 경우#else조건이 거짓일 경우#endif조건 처리문 종료#ifdef매크로가 정의되어 있는 경우#ifndef매크로가 정의되어 있지 않은 경우#line.. 2025. 6. 14.
파일 입출력 함수 목차fgetc와 fputcfgets와 fputsfscanf와 fprintffread와 fwrite 1. fgetc와 fputcfgetc는 문자 입력 함수이고, fputc는 문자 출력 함수입니다.함수를 개방하고, 한번 문자를 입력해 봅시다. 일단 먼저 fgetc를 사용해 봅시다. test.txt에는 Hello World!를 입력해 둡시다.#define _CRT_SECURE_NO_WARNINGS #include int main(void){ // FILE 포인터 선언: 파일 입출력에 사용되는 내부 FILE 구조체의 주소를 저장 FILE* fp; int ch; // 파일에서 읽은 문자를 저장할 변수 // 파일 열기: // 첫 번째 인자: 파일 경로 (백슬래시 '\'를 표현하기 위해 .. 2025. 6. 14.
파일 개방과 입출력 목차 파일을 여는 fopen과 파일을 닫는 fclose 스트림과 파일 포인터텍스트 파일과 바이너리 파일 1. 파일을 여는 fopen과 파일을 닫는 fclose앞서 우리는 키보드를 통해 데이터를 입출력받았습니다.그런데 프로그램이 끝나면 내부의 데이터가 다 날아가버리네요.. 그런데 대부분 일회성 데이터를 다루는 것은 드물겁니다. 학점이라던가, 이름이라던가..이런게 바로 날아가면 무슨 상관인가요? 이러한 데이터의 대부분은 하드디스크에 저장하고 다시 불러들입니다.이렇게 저장하고 불러들이기 위해 파일 입출력에 대해 알아봅시다. 일단 먼저 파일을 찾아서 열어야겠죠, 이때 사용하는 함수가 fopen입니다.그리고 마지막에는 파일을 닫아야 합니다. 파일을 안 닫으면 큰일나요. 이때는 함수 fclose를 사용합니다. 다음.. 2025. 6. 14.
함수와 특수 타입 목차함수 포인터volatile 포인터void 포인터 1. 함수 포인터명령어들의 집합인 함수에도 주소가 있습니다. 함수는 그 이름만 알면 이름으로 쉽게 호출할 수 있지만,프로그램을 만들 때는 호출 함수를 알 수 없고 프로그램이 실행될 때 결정된다면 호출할 함수의 주소를 받기 위해 함수 포인터가 필요합니다. 함수명은 함수의 정의가 있는 메모리의 시작 위치입니다. 즉, 함수명을 알고 있으면 주소연산자 *을 통해 주소를 집어넣을 수 있습니다.마치 배열같네요. &은 필요 없습니다.#include // 함수 원형 선언: int형 인수 2개를 받아 int형 값을 반환하는 함수 sumint sum(int, int);int main(void){ // 함수 포인터 선언: // int형 인수 2개를 받아 int형.. 2025. 6. 14.
이중 포인터와 다차원 데이터 목차이중 포인터포인터 배열배열 포인터다차원 배열과 포인터main 함수의 인수 1. 이중 포인터이중 포인터는 **p를 의미합니다. 그러니까.. *(*p)를 의미하죠.포인터 변수 *p가 담고 있는 주소의 변수인 **p가 의미하는 변수의 값을 의미합니다. 한번 예제로 알아보죠.#include int main(void){ int i = 100; int* p = &i; int** q = &p; *p = 200; printf("i = %d\n", i); **q = 300; printf("i = %d\n", i); return 0;}이해를 돕기 위해 가져온 그림은 다음과 같습니다.물론 다중 포인터도 가능합니다. ***p라던가, ****p라던가.. 근데 저정도까지 필요할 일은 잘 없습니다. 2. 포인터 배열포인터 배열.. 2025. 6. 13.
공용체와 열거형 목차공용체 union열거형 enumtypedef를 이용한 형 재정의 1. 공용체 union공용체는 구조체와 비슷하게 선언할 수 있지만, 모든 멤버가 하나의 저장 공간을 사용합니다. 하지만 공용체와는 조금 다른데, 구조체는 모든 멤버들의 크기합 + 패딩만큼의 크기가 저장되지만, 구조체는 멤버 중 가장 크기가 큰 값만큼을 저장합니다. 구조체가 다음과 같은 크기를 가진다면12345678910111213141516int char[4]double 공용체는 다음과 같은 크기를 가집니다.12345678int char[4] double즉, 공용체 하나를 선언하면 멤버 안에 있는 모든 해당하는 자료형을 공용체에 넣을 수 있습니다.다만 공용체 하나에 여러개의 멤버를 넣을 수는 없어요. 한번 사용해봅시다.#def.. 2025. 6. 13.
구조체 목차자료형의 분류구조체 union구조체 선언과 구조체 크기구조체 참조와 . 연산다양한 구조체 멤버구조체 변수의 대입과 비교구조체 배열구조체 포인터와 -> 연산자구조체와 함수 1. 자료형의 분류통상적으로 자료형은 다음과 같이 분류됩니다.int, long, float, char.. 등의 기초자료형배열, 포인터, 구조체, 공용체 등의 파생자료형typedef, enum 등의 사용자 정의 자료형 말이죠. 하지만 실무나 사용자 입장에서 보면 좀 달라요.int, long,float, ...배열, 포인터를 기초자료형으로 잡고,구조체, 공용체, typedef, enum 등을 사용자 정의 자료형이라 하기도 합니다. 2. 구조체 그래서, 구조체가 뭡니까?구조체란, 각자 다른 자료형을 가진 변수들을 모아서 새 변수를 선언하는.. 2025. 6. 12.
함수 - 예제 모음 목차정수 가지고 장난하기배수 검사기어느 실수가 더 클까이건 알파벳 대문자인가요?원의 면적 구하기윤년 계산기반올림하기소득세를 뜯겠다오일러의 수 e 1. 정수 가지고 장난하기함수 3개를 만듭시다. 함수는 홀 짝을 반환하는 even 함수, 절댓값을 구하는 absolute 함수, 음수와 양수를 구분하는 함수 sign을 만드세요.이제 값을 main에서 입력받아서 각 값을 출력해봅시다. 함수 원형은 무조건 int ~ ( int )여야 합니다. 입출력정수를 입력하세요 : 12even()의 결과 : 1 짝수입니다.absolute()의 결과 : 12sign()의 결과 : 1 양수입니다. 정답은 다음과 같아요. #define _CRT_SECURE_NO_WARNINGS#include int even(int);int a.. 2025. 6. 11.
728x90