이번 포스팅에서는 포인터를 활용해 배열의 원소를 역순으로 출력해보았습니다. // 배열의 원소를 역순으로 출력하기 #include void print_reverse(int a[], int n); int main(void) { int a[] = { 10, 20, 30, 40, 50 }; int size; size = sizeof(a) / sizeof(a[0]); // a 배열의 크기 구하기 print_reverse(a, size); return 0; } void print_reverse(int a[], int n) { int* p = a + n - 1; // 마지막 노드를 가리킨다. while (p >= a) // 첫번째 노드까지 반복 { printf("%d\n", *p--); // p가 가리키는 위치를 출..
전체 글
공유 문화가 좋아 운영하는 블로그입니다. 개발, 컴퓨터 활용법, 기술/자기계발 도서의 서평을 주로 다룹니다.이번 포스팅에서는 포인터와 배열을 다루어봤습니다. 배열을 이해하는데 무리가 없었는데, 포인터는 이해를 하는데 조금 시간이 걸리네요. 그래서 각각 특징을 포스팅을 통해 코드로써 소개해보려합니다. 첫번째 특징으로 "포인터는 배열의 인덱스 표기법보다 동작 속도가 빠르다." 입니다. 하단의 작성된 코드를 보시면 알 수 있듯이 둘의 결과값은 다르지 않습니다. 하지만, 포인터의 경우 배열처럼 인덱스값을 매번 호출할 필요는 없기에 그 속도는 더 빠르다고 합니다. // 포인터를 사용한 방법의 장점 // 포이터가 인덱스 표기법보다 빠르다. why? 인덱스를 주소로 변환할 필요가 없어서 #include int get_sum1(int a[], int n); int get_sum2(int a[], int n); int mai..
이번 포스팅에서는 하나의 배열 요소를 다른 요소에게 복사하는 코드를 작성해보았습니다. #include #define SIZE 10 void array_print(int a[], int size); // 배열 출력 함수 void array_copy(int a[], int b[], int size); // 배열 복사 함수 int main(void) { int a[SIZE] = { 0, 1, 2, 3, 4, 5 }; int b[SIZE] = { 0, }; array_print(a, SIZE); array_copy(a, b, SIZE); array_print(b, SIZE); return 0; } void array_print(int a[], int size) { int i; for (i = 0; i < SIZ..
이번 포스팅에서는 2개의 정수 배열을 비교하는 코드를 작성해보았습니다. 반복적으로 사용되어야 하는 부분은 모두 함수로 처리를 하여 main함수 내의 가독성을 최대한 높이고자 하였습니다. | 수정 전 코드(오류 있어요) > 댓글 달아주신거 보고서야 알았습니다. 해당 코드에 오류가 있다는 걸, 아래의 코드 실행시 댓글의 내용처럼 해당 코드는 바로 리턴을 해버리면서 판단 오류가 발생합니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #define SIZE 10 int array_print(int a[], int size); // 배열 출력 함수 int array_equal(int a[], int b[], int size); // 배열 비교 함수 i..
이번 포스팅에서는 배열로 최대값과 최소값을 출력하는 코드를 작성해보았습니다. main함수 내부를 조금 더 간결하게 작성하고자 최대값과 최소값을 구하는 부분은 각각 함수를 정의하여 따로 실행하도록 구성하였습니다. #include #define size 10 #include #include void max_function(int random[]); // 최대값 함수 void min_function(int random[]); // 최소값 함수 int main(void) { int random[size]; int i; srand((unsigned)time(NULL)); // rand() 시드값 초기화 for (i = 0; i < size - 1; i++) // 배열은 0부터 시작하므로 { random[i] = ..
이번 포스팅에서는 배열을 활용해 월별 일수를 출력하는 코드를 작성해보았습니다. #include int main(void) { int day[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int size = sizeof(day) / sizeof(day[0]); int i; for (i = 0; i < size; i++) { printf("%d월은 %d일까지 있습니다.\n", i+1, day[i]); } return 0; } 그럼 오늘도 즐거운 코딩!
이번 포스팅에서는 순환호출을 활용해서 피보나치 수열을 계산하는 코드를 작성해보았습니다. 0~9까지의 피보나치 수열을 구하여 화면에 표시하는 데 있어서는 for 반복문을 활용해보았습니다. #define _CRT_SECURE_NO_WARNINGS #include int fib(int x); // 피보나치 수열 함수 int main(void) { for (int i = 0; i < 10; i++) { printf("f(%d) = %d\n", i, fib(i)); } return 0; } int fib(int x) { if (x == 0) { return 0; } else if(x == 1) { return 1; } else { return fib(x - 2) + fib(x - 1); } } 틀린 부분이나 오타..
이번 포스팅에서는 순환호출을 활용하여 이항계수(binomial coefficient)를 계산하는 순환함수를 작성해보았습니다. #define _CRT_SECURE_NO_WARNINGS #include int recursive(int x, int y); int main(void) { int n, k, sum; printf("n="); scanf("%d", &n); printf("k="); scanf("%d", &k); sum = recursive(n, k); printf("이항계수의 값: %d\n", sum); return 0; } int recursive(int x, int y) { if (y == 0 || x == y) { return 1; } else if (0 < y && y < x) { return..