프로그래밍 25

[C/C++] fflush 함수

fflush 함수함수의 인자에 해당하는 입출력 버퍼를 지울 때 사용한다내용을 입력하고 ENTER 를 입력할 때 '\n' 는 아래 그림처럼 버퍼에 남게 된다이러한 경우를 없애기 위해서 fflush(stdin) 명령어를 사용한다보통 반복문 끝에 사용한다 단, fflush 는 버퍼에 있는 데이터를 그냥 지우는 것이 아니라 출력하고자 하는 곳으로 전송한다입력버퍼를 비우기 위해서는 버퍼에 있는 데이터를 읽어들이면 된다 void insert_line(LinkedListType *buffer) { int position; char line[MAX_CHAR_PER_LINE]; element p; printf("입력행번호를 입력하세요: \n"); scanf("%d", &position); printf("내용을 입력하세요..

[C/C++] 동적 메모리 할당 malloc

동적 메모리 할당?동적 메모리 할당(dynamic memory allocation)이란프로그램이 실행 도중에 동적으로 메모리를 할당받는 것을 말한다 이와 반대로 정적 메모리 할당이란 개념도 있다프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는다정적으로 할당받으면 메모리의 크기는 프로그램의 실행 도중에 크기가 변경될 수 없다int number = 10; 과 같은 경우이다 동적 메모리 할당의 방법은 다음과 같다 #include int *pi; pi = (int *)malloc(sizeof(int)); ... free(pi); malloc.h 헤더파일을 지시문으로 불러오고malloc(int size) 함수를 사용하여 size 바이트(위 경우 4 바이트) 만큼의 메모리 블록을 할당한다새로운 메모리 ..

[C/C++] 포인터 pointer

포인터?포인터(Pointer)는 다른 변수의 주소를 가리킨다포인터 변수를 선언하기 위해서는 * 연산자를 사용하여 선언한다포인터 변수에 다른 변수의 주소를 대입하기 위해서는 & 연산자를 사용한다 char a = 'A'; char *p; p = &a; 'A' 라는 값을 가진 char형 변수의 주소는 26 이다char형 변수의 주소를 가리키는 포인터는 26 의 값을 가지게 된다 *p = 'A' a = 'A'&a = 26 p = 26 여기서 *p 의 값을 바꾸게 되면 어떻게 될까? *p = 'B'; 위 코드를 실행하면 a 의 값이 'B' 로 바뀌게 된다*p 와 변수 a 는 동일한 객체(상자)를 가리킨다즉, *p 와 a 는 완전히 동일하다동일한 객체를 가리키기 때문에 한 쪽의 값을 바꾸게 되면 다른 한 쪽의 값도..

[C/C++] 구조체 struct

구조체란? C언어 문법을 배울 때 배열에 대해서 공부한 기억이 있을 것이다배열은 같은 타입의 변수들의 집합이라고 할 수 있다그렇다면 타입이 다른 변수들은 어떻게 묶을까? 구조체(structure)는 다른 타입의 변수들의 집합이라고 할 수 있다구조체를 사용하는 방법은 다음과 같다 //구조체를 정의하는 방법 struct person { char name[10]; int age; float height; ... }; //구조체 변수를 선언하는 방법 struct person a; 보시다시피 person 이라는 구조체의 내부에는char 문자열과 int형 변수 float형 변수 등 서로 다른 타입의 변수들이 묶여있음을 확인할 수 있다 그리고 typedef 를 사용하면 구조체를 아예 새로운 타입으로 선언할 수 있다 ..

[C/C++] 순환, 재귀 호출

순환(Recursion)어떤 알고리즘이나 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법 순환을 이용하는 가장 쉬운 예시인 팩토리얼을 생각해보자 3! 을 계산하기 위해선 어떻게 해야 할까? 3! = 3 * 2 * 1 이다 위 식을 다르게 표현해보자 3 * 2! 로 표현할 수도 있다 2! 는 어떻게 계산할까? 2 * 1 이다 또한 2 * 1! 로 표현할 수도 있다 즉 n! 를 계산하기 위해서는 (n - 1)! 를 계산해야하고 이를 계산하기 위해서는 (n - 2)! 를 계산해야 한다 여기서 공통점이 있다 전부 팩토리얼이라는 것이다 즉 팩토리얼을 계산하는 함수를 반복하면 계산할 수 있다 이렇게 주어진 문제를 더 작은 동일한 문제들로 분해하여 해결하는 방법을 분할 정복(divide and conqu..

728x90