[[TableOfContents]] = 출석 및 진행 = * 권우성 * 채유빈 * 약 1시간 30분 진행 = 수업 내용 = == 재귀함수 복습 == * [스택]에 대해 알아봤습니다. * 재귀 함수를 응용하려면 많은 연습이 필요합니다. === 팩토리얼 === {{{ int fact(int n) { if(n<=1){ return 1; }else{ return n*fact(n-1); } } }}} === 하노이탑 === {{{ void hanoi(int n, int a, int b, int c) { if(n==1){ printf("%d --> %d\n", a, c); }else{ hanoi(n-1. a. c. b); hanoi(1, a, b, c); hanoi(n-1, b, a, c); } } }}} == 포인터와 주소 == * 내용이 많아 주석을 많이 달지 못했습니다. 직접 컴파일하고 실행해보고, 궁금한 점은 질문하시기 바랍니다. === 포인터 === {{{ int main() { short s; // 정수형 변수 선언 short *ptr; // short형 변수의 주소를 저장할 수 있는 변수 선언 // 포인터 변수를 선언할 때에는 '*'를 변수 이름 앞에 붙입니다. ptr=&s; // s의 주소를 ptr에 대입합니다. &s 는 변수 s가 저장된 메모리 주소를 뜻합니다. printf("%x %x", ptr, &s); printf("%x %x", ptr, ptr+1); *ptr=10; printf("%d %d", s, *ptr); // 포인터 변수 앞에 '*'를 써서 저장된 주소에 접근할 수 있습니다. return 0; } }}} === 배열과 주소 === {{{ int main() { short array[10]; short *ptr; ptr=array; // array=ptr 은 불가능합니다. // array는 &(array[0])와 같이 저장 공간이 아닌 주소값입니다. *(ptr+1)=5; printf("%d", array[1]); ptr[2]=6; printf("%d", *(array+2)); // array[0] === *array === *(array+0) 동일 합니다. return 0; } }}}