내용 출처 : YES C (정보공학연구소 /생능출판사)
혼자 연구하는 C/C++ (SoEn.kr /와우북스)
Ⅰ. 기억장치 관리 함수
① 힙(메모리의 동적 영역)에 공간을 할당하고 해제하는데 사용되는 함수.
② 이에 대한 내용은 동적할당에 대해 적은 부분에서 확인할 것.
③ 아래의 함수들은 stdilb.h나 malloc.c에 선언되어 있다.
함수명 |
형식 |
기능 |
calloc() |
void* calloc(unsinged n, unsigned size) |
size 바이트의 공간을 n개 할당하고 시작 지점의 포인터를 반환. 내용은 0으로 초기화 |
malloc() |
void* malloc(unsigned size) |
size 바이트의 공간을 할당하고, 시작 지점의 포인터를 반환. |
free() |
void* free(void* ptr) |
ptr이 가리키는 메모리 공간을 해제 |
realloc() |
void* realloc(void* ptr, unsigned size) |
ptr이 가리키는 메모리 공간의 크기를 size 바이트로 변경 |
Ⅱ. 자료 변환 처리 함수
① 문자열을 변환 문자를 사용하여 편집하거나, 수치 자료로 변환하는 함수
② 아래의 함수들은 stdlib.h에 선언되어 있다.
함수명 |
형식 |
기능 |
atoi() |
int atoi(cont char* str) |
str의 문자열을 int형 정수로 변환 |
atol() |
int atol(const char* str) |
str의 문자열을 long형 정수로 변환 |
atof() |
double atof(const char* str) |
str의 문자열을 double형의 실수로 변환 |
itoa() |
char* itoa(const int val, char* str, int rad) |
rad진법의 val의 정수를 문자열로 변환하여 str에 저장 |
qsort() |
void qsort(void* base, unsigned num, unsigned size, int (*func)(const void*, const void*)) |
func가 가리키는 비교 함수를 이용하여 quick sort 방식으로 데이터를 정렬. |
bsearch() |
void* basearch(const void* key, const void* base, unsigned num, unsigned size, int(*func)(const void*, const void*)) |
func가 가리키는 비교함수로 qsort를 호출한 뒤, num개의 데이터가 있는 테이블 base에서 key값을 찾아내 그 번지를 반환한다. |
③ qsort()에서 함수 포인터로 호출하는 func(a,b) 함수는 a<b 이면 음수, a == b이면 0, a > b이면 양수를 리턴해야한다.
Ⅲ. 산술 함수
① 수학적 계산을 수행하는 함수
② 대부분의 산술 함수들의 인수와 반환값은 double형으로 선언되어 있다.
③ 아래의 함수들은 대부분 math.h에 선언되어 있으나, rand()와 srand()는 stdlib에 선언되어 있다.
함수명 |
형식 |
기능 |
sin(x) |
double sin(double x) |
sin 함수 제공 |
cos(x) |
double cos(double x) |
cos 함수 제공 |
tan(x) |
double tan(double x) |
tan 함수 제공 |
fmod(x) |
double fmod(double x, double y) |
double형 부동 소수점수를 x/y한 나머지를 반환 |
log(x) |
double log(double x) |
자연 loge x 제공 |
log10(x) |
double log10(double x) |
상용 log10 x 제공 |
exp(x) |
double dxp(double x) |
지수함수 제공 |
asin(x) |
double asin(double x) |
arch sin 함수(sin함수의 역함수) 제공 |
acos(x) |
double acos(double x) |
arch cos 함수(cos함수의 역함수) 제공 |
atan(x) |
double atan(double x) |
arch tan 함수(tan함수의 역함수) 제공 |
pow(x,y) |
double pow(double x, double y) |
x의 y승을 제공 |
sqrt(x) |
double sqrt(double x) |
양의 제곱근 루트(x)를 제공 |
abs(x) |
int abs(int x) |
x의 절대값 제공 |
floor(x) |
double floor(double x) |
x값 이하의 최대 정수를 반환 |
ceil(x) |
double ceil(double x) |
x값 이상의 최소 정수를 반환 |
rand() |
int rand() |
0에서 RAND_MAX값 사이의 임의의 수를 반환 |
srand() |
void srand(unsigned seed) |
난수 발생기를 seed값으로 초기화시킨다. |
④ rand()의 RAND_MAX는 stdlib.h에 #define RAND_MAX 0x7fff(32767)로 정의되어 있는 매크로 상수이다.
⑤ srand()를 사용하지 않으면 rand()로 생성되는 값이 프로그램을 재실행시켜도 항상 같다.
Ⅳ. 시간 관련 함수
① 시스템의 시간이나 그리니치 표준시, 날짜 등을 얻고자 할 때 사용되는 함수들.
② 아래의 함수들은 time.h에 선언되어 있다.
함수명 |
형식 |
기능 |
time() | time_t time(time_t* timer) | 현재시간을 조사해서 전달된 인자에 저장하고, 반환한다. |
localtime_s() |
errno_t localtime_s(tm* const tmp, time_t const* const t ) |
time()함수로 구한 로컬 시간을 tm구조체 tmp에 저장한다. |
gmtime_s() |
errno gmtime_s(tm* const tmp, time_t const* const t) | time()함수로 구한 그리니치 표준시를 tm구조체 tmp에 저장한다. |
ctime_s() |
errno_t ctime_s(char* const Buffer, constsize_t Bytes, time_t const* const t) |
time()함수로 구한 로컬 시간을 buffer에 bytes만큼 저장. buffer 크기와 bytes의 값은 26 이상이어야 한다. |
difftime() |
double difftime(time_t t1, time_t t2) |
시간 t1과 t2간의 시간 차이를 초로 계산해서 반환 |
③ time_t형은 time.h에 32bit에서는 long으로, 64bit에서는 __int64(==long long)으로 정의되어 있다.
④ tm 구조체는 time.h에 다음과 같이 저장되어 있다.
struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; |