* 포인터
- 포인터를 이용한 메모리 동적 할당
* 상수
- 8진 상수: 숫자 앞에 0을 붙인다
- 16진 상수: 숫자 앞에 0x를 붙인다
- 문자형 상수는 내부적으로 해당 문자의 ASCII 코드값이 사용된다
- 실수형 상수는 소수형식과 지수형식으로 표시할 수 있다
* 출력양식변환기호
%문자 | 변환 형식 | 부호 | 인자의 자료형 |
%d | 10진 정수 | O | char, short int, int |
%ld | 10진 long 정수 | O | long int |
%lld | 10진 long long 정수 | O | long long int |
%u | 10진 정수 | X | unsigned int |
%o | 8진수 | X | unsigned int |
%x, %X | 16진수 | X | unsigned int |
%f | 10진 부동소수점 | float, double | |
%lf | 10진 부동소수점 | long double | |
%e, %E | 지수 | float, double | |
%c | 한 문자 | char, short int, int | |
%s | 문자열 | char * | |
%p | 포인터 주소값 | void * |
* 메모리 동적할당 함수
1. malloc() 함수
- 형식: void * malloc(size_t number_of_bytes);
- 기능: number_of_bytes에서 주어지는 크기만큼 기억 공간을 동적으로 할당한다.
- 사용 예: void * malloc(sizeof(int));
- 기타
ㄴ 인자로 할당받고자 하는 기억 공간의 크기를 byte 단위로 전달
ㄴ 힙 영역에 그 크기만큼 기억 공간을 할당하고, 할당한 기억 공간의 첫 번째 주소를 반환
ㄴ void* 로 명시하여 어떤 형으로든 형 변환 가능
ㄴ 초기화 안 됨 (기억공간의 초기화를 위해서는 memset() 사용)
2. free() 함수
- 형식: void free(void *p);
- 기능: 동적으로 할당된 기억공간을 해제
- 기타
ㄴ 힙 영역에 할당된 공간은 프로그램이 종료될 때까지 유지
ㄴ 할당된 기억 공간을 해제하지 않으면 기억 공간의 부족 현상이 발생
ㄴ 따라서 명시적인 반납이 필요
3. calloc() 함수
- 형식: void * calloc(int n, int size);
- 기능: 주어진 size의 크기를 가지는 기억공간 n개를 할당받는다.
- 사용 예: void * calloc(n, sizeof(int));
- 기타
ㄴ malloc() 함수와 동일하게 힙 영역에 기억공간 할당
ㄴ 다른 점은 사용하는 형태와 할당된 기억 공간을 0으로 초기화
4. realloc() 함수
- 형식: void * realloc(void *p, int size);
- 기능: 포인터 p가 가리키고 있는 기억공간의 크기를 지정된 size의 크기로 변경
- 기타
ㄴ 이미 할당받은 기억 공간의 크기를 변경해야 할 필요가 있을 경우 사용
* 기억공간 관리 함수
1. memcmp() 함수
- 형식: int memcmp(void *s1, void *s2, size_t n);
- 기능: s1과 s2가 가리키는 기억 공간의 내용을 n byte만큼 비교
- 기억 공간에 들어 있는 자료를 주어지는 크기만큼 비교하여, 같은지 여부를 알 수 있게 해주는 함수
2. memcpy() 함수
- 형식: void *memcpy(void *dest, const void *src, size_t n);
- 기능: src에서 n byte만큼 dest에 복사
- 기억공간의 자료를 다른 기억 공간 영역으로 복사하기 위한 함수
3. memset() 함수
- 형식: void *memset(void *s, int c, size_t n);
- 기능: 포인터 s가 가리키는 곳을 c값으로 n byte만큼 채운다
- 기억공간의 자료를 지정한 문자로 채우는 함수
- 할당된 기억 공간의 초기화나 내용 삭제를 위해 주로 사용
'Programming > Computer Science Fundamentals' 카테고리의 다른 글
[컴퓨터의 이해] 기말고사 대비 5-13장 요약 (0) | 2022.06.17 |
---|---|
[이산수학] 부울대수의 기본 정리 Laws and Theorems of Boolean Algebra (0) | 2022.06.17 |
[선형대수] 4. 역행렬 (2) | 2021.11.22 |
[선형대수] 3. 행렬연산 (0) | 2021.11.21 |
[자료구조] 2. 배열 (0) | 2021.10.04 |
[자료구조] 1. 자료구조의 개념 (0) | 2021.10.04 |
[프로그래밍 언어론] BNF를 EBNF로 변환하는 방법 (4장 보충) (0) | 2021.10.04 |
[선형대수] 1. 일차연립방정식 ~ 2. 행렬과 가우스 소거법 (0) | 2021.09.26 |