728x90 c언어 동적 할당2 C언어 - 순열 알고리즘 [nPr] 경우의 수 순열을 프로그래밍화 (나열, 카운팅) 순열이란? - 서로다른 n개에서 중복 없이 r개를 택하여 나열하는것을 순열이라 한다. nPr (Permutation) 구현 방향 - n의 원소의 갯수가 늘어날 수록 for문의 중첩이 계속 늘어나야 한다. - for문으로 구현할 경우 중첩이 많아질경우 효율이 떨어지고 n과 r의 값이 변할때마다 코드를 수정해줘야한다. - 재귀함수를 사용해서 문제를 풀어보도록 하자. 코드 #include int arr[] = {1,2,3,4}; //전역 변수로선언. 동적 할당이 효율적임 void swap(int *a, int *b ){ //값을 이동하기 위한 함수 int tmp; tmp = *a; *a = *b; *b = tmp; } void print_arr(int size).. 2020. 7. 3. C언어 - malloc, free, sizeof 를 이용한 동적 할당 메모리를 할당할 때 malloc, calloc, realio 함수를 사용하여 메모리를 동적 할당한다. 동적 할당하는 이유는 메모리를 효율적으로 사용하기 위함이고 C언어 경우 메모리를 자동으로 관리를 해주지 않기 때문에 직접 관리해 메모리 누수를 예방 그리고 이미 할당된 메모리라도 언제든지 크기 조정할 수 있다. 하지만, 해제하지 않으면 누수가 발생하므로 꼭 명시적으로 메모리를 해제해야 한다. malloc 함수 ( memory allocate - 메모리 할당 함수) - 함수의 원형 //라이브러리 헤더파일 void *malloc (size_t size) //size_t 는 부호 없는 정수 //size 바이트의 메모리를 힙에서 할당하여 반환 int *i = (int*) malloc (sizeof(int)); .. 2020. 6. 26. 이전 1 다음 728x90