Computer Language/C

C 는 소스로직 중 특정구간의 수행시간 차이를 계산하기 위해 마이크로 단위의 시간 함수 gettimeofday 를 지원합니다. gettimeofday 함수 구조#include int gettimeofday(struct timeval *tv, struct timezone *tz);timezone 은 잘 사용되지 않으며, timeval 의 구조는 다음과 같습니다.반환되는 값은 1970-01-01 00:00 부터 함수가 호출된 시간까지의 ms 값 입니다.struct timeval { time_t tv_sec; suseconds_t tv_usec; }tv_sec 는 초, suseconds_t 는 마이크로초를 저장합니다. gettimeofday 사용법$ cat mozi.c #include #include int ..
malloc 힙 영역에 메모리를 동적으로 할당합니다. malloc 함수 구조#include void* malloc(size_t size) free 힙 영역에 할당된 메모리를 해제합니다. free 함수 구조void* free(void*) malloc, free 사용법#include #include struct Mozi { char name[10]; int age; }; int main() { struct Mozi *mozi = malloc(sizeof(struct Mozi)); free(mozi); return 0; } malloc 을 사용한 후 free 를 해제하는 이유malloc 를 사용하여 메모리를 할당한 뒤, 해제하지 않으면 어플리케이션이 종료되기 전까지 메모리에 공간이 할당되어 있으며,낭비 혹은 ..
memcmp 두 문자열의 바이트를 지정한 범위만큼 비교합니다. memcmp 함수 구조#include int memcmp ( const void * str1, const void * str2, size_t n );str1 과 str2 를 n 의 바이트만큼 비교합니다.앞자리에서부터 비교되며, str2 가 str1 보다 큰 경우 0 보다 작은 값, 작은 경우 0 보다 큰 값, 동일한 경우 0 을 반환합니다. memcmp 사용 예제#include #include int main () { char str1[12]; char str2[12]; int state; strcpy(str1, "mozi"); strcpy(str2, "tistory"); state = memcmp( &str1, &str2, 4 ); prin..
memcpy 소스 변수로부터 지정한 범위만큼 타겟 변수로 값을 복사합니다. memcpy 함수 구조 #include void * memcpy ( void *dest, const void *src, size_t n);src 변수에서 n 길이만큼 dest 변수로 값을 복사합니다.이 때, 메모리 영역은 겹치지 않습니다.메모리 영역을 겹쳐쓰길 원하는 경우 memmove 함수를 사용합니다. memcpy 사용예제 memset 링크를 먼저 봐주시면 더욱 좋습니다.http://mozi.tistory.com/56 #include #include EXEC SQL BEGIN DECLARE SECTION; char sC1[10+1]; char sC2[10+1]; EXEC SQL END DECLARE SECTION; memset..
memset 변수 메모리 주소의 시작점으로부터 연속된 범위를 특정 값으로 지정하는 함수입니다. memset 함수 구조#include void * memset ( void *s, int c, size_t n);s 가 가리키고 있는 메모리 영역 시작점으로부터 n 바이트를 c 로 채웁니다. memset 사용 이유 1. 수행 속도가 빠르기 때문입니다.2. s 를 사용하기 전 내용을 비우는 작업을 해줍니다.3. memcpy 사용 시 0x00 은 복사되지 않기 때문입니다. memset 으로 사전에 0x00 으로 할당해 두면, 더욱 안전하게 사용할 수 있습니다. memset 사용예제일반 C 가 아닌 Embedded SQL 소스로 구성되어 있으며, 핵심 부분을 제외한 나머지 소스는 생략되어 있습니다.gSQL> CREA..
Pointer주소값을 가지는 변수입니다. 주소값이란모든 변수는 주소값을 가지며, & 를 사용하여 조회할 수 있습니다.다음 소스는 p 의 변수 값과, p 가 할당된 메모리 주소를 조회합니다.#include main() { int p = 0; printf("p value = %d, p memory address %p\n", p, &p); return 0; }p value = 0, p memory address 0x7ffc317fdcdc위의 소스를 수행할 때 memory 상의 0x7ffc317fdcdc 주소에 0 이 저장되어 있습니다. 포인터를 선언하는 방법변수명 앞에 * 를 사용하여 포인터 변수를 선언합니다.Valuetype *valuename; int 형 포인트 변수 p 를 선언하였습니다. 이후에 포인터 ..
Call By Value 와 Call By Reference 함수에서 인자를 전달하는 방식의 차이점에 따라 불리는 명칭입니다.Call By Value 는 값을 전달, Call By Reference 는 값 주소를 전달합니다. Call By Value 변수의 주소를 전달하지 않고, 값을 전달하기 때문에 다른 함수로 전달된 인자는 전달된 함수 내에서만 적용받게 됩니다. 소스를 수행하면 다음 단계가 진행됩니다.1. main 함수에서 value 의 변수 주소를 생성한 뒤, 이 주소에 10이라는 값을 저장합니다.2. main 함수에서 Value 함수에 value 는 10이라는 값을 전달합니다.3. Value 함수 내에는 value 라는 새로운 변수 주소를 생성한 뒤, 이 주소에 연산을 수행합니다.4. Value ..
꽁담
'Computer Language/C' 카테고리의 글 목록 (2 Page)