티스토리 뷰
* 매개변수 전달 방법
- Call by value
- Call by reference ---> 포인터
* 스택 프레임 그리는 방법 ---> 중요
-------------------------------------------------- 함수 응용1
* 재귀호출
- 재귀호출을 이용한 문자열 출력
- 재귀호출의 장/단점
* 문자/문자열 처리 함수
- 문자 처리 함수
- 문자열 처리 함수
- 유니코드 문자열
* 유틸리티 함수
- atoi, atol, atof
- time, localtime, ctime
- srand, rand
- system, exit
-------------------------------------------------- 함수 응용2
* 재귀호출
- 함수가 함수를 호출하고, 그 함수는 또 다른 함수를 호출하고... --> callstack
- stack은 위로 쌓아 올린다...
- stack 구조는 어느경우에 적당한가
. 가장 최근의 일을 가장 위로...
. 함수 call -> call -> call .. 반환.. 반환 ... 반환 ... stack의 구조가 좋아...
ex) 반복문을 이용한 5 팩토리얼 계산
#include <stdio.h>
int main(void)
{
int i=0, nFact=1;
for(i=5;i>=1;--i)
nFact=nFact*i;
printf("5! == %d\n",nFact);
return 0;
}
-----------------------------
결과) 5! == 120
ex) 재귀호출을 이용한 5 팩토리얼 계산
#include <stdio.h>
int GetFactorial(int nParam)
{
int nResult=0;
if(nParam==1) return 1;
nResult=nParam*GetFactorial(nParam -1);
return nResult;
}
int main(void)
{
printf("5! == %d\n", GetFactorial(5));
return 0;
}
-----------------------------
결과) 5! == 120
ex)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void PutData(char *pszParam)
{
if(*pszParam=='\0')
return;
putchar(*pszParam); // 찍고
PutData(pszParam + 1); // 또 호출하고 --> 윗줄 아랫줄 순서를 바꾸면 호출된 함수를 빠져나가면서(반환) TestData의 역순으로,
} // 즉, ataDtseT 순으로 찍게된다.
// 스택은 가장 먼저 push한 정보가 가장 나중에 pop(LIFO) 구조임. 엑셀/워드의 undo(ctrl+z) 와 유사..
int main(void)
{
PutData("TestData");
putchar('\n');
return 0;
}
---------------------------------
결과) TestData
재귀호출의 단점
stack의 크기가 1MB정도이므로 스택 메모리를 순식간에 대량으로 소모할 가능성이 있다. -- stack overflow
이러한 이유로 사용할 때는 신중을 기해야 함.
반복문으로 가능하다면 반복문을 쓰는게 맞다. 그러나 비선형 자료구조인 트리를 다룰때는 대부분 재귀호출을 사용하고, 그게 맞다. (17:36')
* 문자열 처리 함수
문자열 상수? ... 상수X
... 상수화된 문자 배열O
'Test > C' 카테고리의 다른 글
전화번호부 v2.0 : 파일을 통해 관리하는 전화번호부 (0) | 2018.12.30 |
---|---|
전화번호부 v1.0 : 메모리에서만 동작하는 전화번호부 (0) | 2018.12.30 |
함수 응용1 : 매개변수 전달방법, 스택 프레임 그리는 방법 (0) | 2018.12.26 |
메모리와 포인터6 : 변수와 메모리 (0) | 2018.12.23 |
메모리와 포인터6 : 다차원 배열에 대한 포인터 (0) | 2018.12.23 |
- Total
- Today
- Yesterday
- virt-sysprep
- dp-2
- dp-1
- cloud-init
- oracle
- storage
- 중복제거
- 3par
- 스토리지
- insert
- 제곱
- fromkeys
- LIST
- powershell
- 정렬
- EXA
- 배열
- Join
- 대소문자
- exadata
- 읽어오기
- set()
- vmware.powercli
- powercli
- Append
- 변수화
- 차집합
- 부동없이
- sysprep
- vmware
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |