Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

새싹교실/2012/열반/120514: Difference between revisions

From ZeroWiki
imported>joojis
No edit summary
(Repair batch-0005 pages from live compare)
 
(One intermediate revision by one other user not shown)
Line 6: Line 6:
= 수업 내용 =
= 수업 내용 =
== 재귀함수 복습 ==
== 재귀함수 복습 ==
* [[스택]]에 대해 알아봤습니다.
* 스택에 대해 알아봤습니다.
* 재귀 함수를 응용하려면 많은 연습이 필요합니다.
* 재귀 함수를 응용하려면 많은 연습이 필요합니다.
=== 팩토리얼 ===
=== 팩토리얼 ===
Line 29: Line 29:
  }
  }
== 포인터와 주소 ==
== 포인터와 주소 ==
* 내용이 많아 주석을 많이 달지 못했습니다. 직접 컴파일하고 실행해보고, 궁금한 점은 질문하시기 바랍니다.
=== 포인터 ===
=== 포인터 ===
  int main()
  int main()
Line 51: Line 52:
  int main()
  int main()
  {
  {
  short array[10];
  short array[10];
  short *ptr;
  short *ptr;
   
   
  ptr=array;
  ptr=array;
  // array=ptr 은 불가능합니다.
  // array=ptr 은 불가능합니다.
  // array는 &(array[0])와 같이 저장 공간이 아닌 주소값입니다.
  // array는 &(array[0])와 같이 저장 공간이 아닌 주소값입니다.
   
   
  *(ptr+1)=5;
  *(ptr+1)=5;
  printf("%d", array[1]);
  printf("%d", array[1]);
   
   
  ptr[2]=6;
  ptr[2]=6;
  printf("%d", *(array+2));
  printf("%d", *(array+2));
   
   
  // array[0] === *array === *(array+0) 동일 합니다.
  // array[0] === *array === *(array+0) 동일 합니다.
   
   
  return 0;
  return 0;
  }
  }

Latest revision as of 00:45, 27 March 2026

출석 및 진행

  • 권우성
  • 채유빈
  • 약 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;
}