본문 바로가기

전체 글45

포인터 포인터란? 메모리의 한 지점, 간단히 말해 번지값을 가지는 변수이다.어떠한 형태의 변수던지(register형만 제외하고) 반드시 메모리에 보관되며 모든 메모리는 번지를 가지고 있다.따라서 이 변수의 번지를 가르키는 포인터 변수를 항상 선언할 수 있다. int, char , double 등 기본적인 데이터 타입에 대하여 int *, char *, double* 형의 변수를 선언할 수 있음은 물론이고, 공용체, 구조체, 배열에 대해서 포인터형을 만들 수도 있다.사용자가 직접 만든 타입에 대해서도 포인터형 변수를 선언할 수 있으며, 심지어는포인터 타입에 대해서도 포인터를 선언할 수 있다. 포인터를 선언할때는가르킬타입 *(에스터리크스) 포인터변수의 이름;이렇게 선언한다.int* ptr; 도 가능하고 int *p.. 2016. 3. 31.
C언어]재귀 - 피보나치 수열 이 문제는 N을 입력하면 N번째의 피보나치 수열 값을 출력한다. 피보나치 수열은 다음과 같다. 1 1 2 3 5 8 13 21...이처럼 N이라면, N-1번째의 수와 N-2 번째의 수를 더한 값을 구한다. 이를 코드로 구현하면 다음과 같다. 1234567891011121314151617#include int print(int b); int main(void){ int a, b=0; scanf("%d", &a); printf("%d\n", print(a));}int print(int b){ if (b == 1 || b == 2) return 1; else return print(b - 1) + print(b - 2);}Colored by Color Scriptercs 먼저 a를 입력받아 전달하고, 이게 1.. 2016. 3. 29.
C언어] 1부터 N까지의 합 이 문제는 N을 입력하면 1부터 N까지의 수들의 합을 구하는 문제이다. 이를 구현하면 다음과 같다.1234567891011121314151617#include int print(int a, int b); int main(void){ int a, b=0; scanf("%d", &a); printf("%d\n", print(a,1));}int print(int a, int b){ if (b-1 == a) return 0; else return b + print(a, b + 1);}cs 먼저 a 를 입력받고, a와1 을 인자로 준다.만약 b 가 a보다 크다면 종료하고, 아니라면 1 + 2, 이런식으로 다시 자신을 호출한다. 2016. 3. 29.
C언어] 재귀 - A 부터 B 사이의 홀수 출력. 이문제는 입력한 A 부터 B 사이의 홀수를 모두 출력하는 문제이다.이를 코드로 구현하면 다음과 같다.123456789101112131415161718192021222324252627#include void print(int a, int b); int main(void){ int a, b; scanf("%d %d", &a, &b); print(a, b);}void print(int a, int b){ if (a > b) return; else { if (a%2==0) { print(a + 1, b); } else { printf("%d ", a); print(a + 2, b); } }}Colored by Color Scriptercs먼저, A 와 B를 입력받아 함수의 인자로 보낸다.이때 A를 1씩 증가시키.. 2016. 3. 29.