분류 전체보기(139)
-
C언어 - 헤더파일 만들기
헤더파일 #pragma once // header guard #include void print_hello(); void print_hi(); void print_str(char* str); // assume that we have many more longer functions 헤어파일 구현한 c파일 #include "my_print_functions.h" void print_hello() { printf("Hello\n"); // many more lines } void print_hi() { printf("Hi\n"); // many more lines } void print_str(char* str) { printf("%s\n", str); } 헤더를 불러와서 main()에서 사용. #define..
2020.11.11 -
C언어 - 피보나치 예제와 재귀 호출의 장단점
#define _CRT_SECURE_NO_WARNINGS #include /* Fibonnaci sequence 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ..... 맨앞의 숫자는 1 두번째 숫자는 1 세번째 숫자는 맨앞의 수 그리고 그앞의 수 1을 더해서 2 네번째는 세번째 숫자2와 두번째 숫자 1을 더해 3 다섯번째 숫자 5는 2+3의 결과 ....... 고로 자기 앞앞의 숫자와 앞의 숫자를 더한것. ex) fibonacci(5) = 3 + 2 = fibonacci(4) + fibonacci(3) ex) fibonacci(6) = 8 = 5 + 3 = fibonacci(5) + fibonacci(4) */ int fibonacci(int number); int mai..
2020.11.11 -
C언어 - 이진수 변환 예제
#define _CRT_SECURE_NO_WARNINGS #include /* 10 10 / 2 = 5, remainder = 0 5 / 2 = 2, remainder = 1 2 / 2 = 1, remainder = 0 1 / 2 = 0, remainder = 1 */ void print_binary(unsigned long n); void print_binary_loop(unsigned long n); int main() { unsigned long num = 10; print_binary_loop(num); print_binary(num); return 0; } //Note : printing order is reversed! void print_binary_loop(unsigned long num)..
2020.11.11 -
C언어 - 팩토리얼 예제 (Factorial)
loop vs recursion factorial : 3! = 3 * 2 * 1, 0! = 1 5! = 5 * 4! = 5 * 4 * 3! = 5 * 4 * 3 * 2! = 5 * 4 * 3 * 2 * 1! #define _CRT_SECURE_NO_WARNINGS #include long recursive_factorial(num); long loop_factorial(int n); int main() { int num = 5; printf("%d\n", loop_factorial(num)); printf("%d\n", recursive_factorial(num)); return 0; } long loop_factorial(int n) { long ans; for (ans = 1; n > 1; n--) ..
2020.11.11 -
C언어 - 재귀 호출
void my_func(int); int main() { my_func(1); return 0; } void my_func(int n) { printf("Level %d, address of variable n = %p\n", n, &n); my_func(n +1); } my_func가 자신을 호출하고 있다. 호출때마다 새로운 메모리를 차지하기 때문에 문제다. void my_func(int n) { printf("Level %d, address of variable n = %p\n", n, &n); if(n < 4 ) my_func(n +1); } 종료될 조건을 같이 구현해줘야한다. 조건이 충족되지 않으면 종료된다. void my_func(int n) { printf("Level %d, address o..
2020.11.10 -
C언어 - 지역변수와 스택
프로그램이 실행되면 최소한의 필요한 메모리를 사용하기 시작한다.(...은 프로그래머는 알기힘들고 알 필요없는 것들) 1. main()함수 안의 지역변수 int a가 스택에 쌓이게 된다. // a 2. int_max 함수를 호출하고 그안의 int m을 a위에 쌓는다.( 스택에 같이 쌓여있음로 포인터를 이용해서 a를 건드릴수 있다.) //a m 3. 연산이 끝나고 m이 빠지고 다시 a만 남는다. // a 4. 그다음 내부에 들어가 int b를 읽어 b가 쌓인다. // a b 5. 다시 int_max함수를 호출하고 int m을 읽어 그위에 쌓인다. // a b m 6. int_max의 연산이 끝난후 m이 스택에서 빠진다. // a b 7. 그 후 내부의 int b를 읽어들여 그 바깥의 int b 위에 쌓인다...
2020.11.10