본문 바로가기
프로그래밍 공부/C언어

C언어 복습 <part4>

by 조엘 2020. 3. 24.

안녕하세요. 파피몬입니다.

 

이번 겨울방학에 최호성 선생님의 "독하게 시작하는 C프로그래밍" 책을 유튜브 강의와 함께 공부하였습니다.

강의를 들은 내용을 종이에 정리하였고,  중 중요하다고 판단한 내용을 포스팅 하도록 하겠습니다.

 

아직 모르는 게 많은 학생이라 오개념이 있을 수 있습니다. 친절하게 댓글로 알려주시면 좋은 공부 될 것 같습니다!!

 

이번 Part4에서는, 11단원. 메모리와 포인터에 대해서 복습해봅니다. 내용이 많아 정리는 PDF로 대신하고, 자주 쓰는 함수에 대해서 정리하였습니다.  

 

 

1. 동적 할당 함수 및 멤버 초기화

void *malloc(size_t size);
// 인자 : size == 할당 받을 메모리 바이트 단위 크기
// 반환값 : 힙 영역에 할당된 메모리 덩어리 중 첫 번째 바이트 메모리 주소
// 설명 : 약 1.7GB의 메모리 용량을 가진 힙 영역에서 잠시 메모리를 빌려쓰는 것!
// pList = (int*)malloc(sizeof(int)*3);

void *calloc(size_t num, size_t size);
// 인자 : num == 요소의 갯수
// 인자 : size == 각 요소의 바이트 단위 크기
// 반환값 : malloc과 비슷하지만, 배열처럼 size크기를 num개 만큼 할당받는다!
// 설명 : 하지만 malloc과 다르게 0으로 초기화해서 전달한다. 
// pNewList = (int*)calloc(3,sizeof(int));

void *realloc(void *memblock, size_t size);
// 인자 : memblock == 기존에 동적 할당된 메모리 주소 (NULL이면 malloc과 동일)
// 인자 : size == 재할당 받을 메모리의 바이트 단위 크기
// 반환값 : 다시 할당된 메모리 중 첫 번째 바이트의 메모리 주소
// 설명 : 이미 할당된 메모리 영역에서 크기를 조정하거나, 새로운 영역에 재할당!
// pReList = (int*)realloc(pList, sizeof(int)*10);

void free(void *memblock);
// 인자 : memblock == 반환할 메모리의 주소
// 반환값 : 없음
// 설명 : 동적 할당된 메모리를 운영체제에게 반환!
// free(pList);

void *memset(void *dest, int c, size_t count);
// 인자 : dest == 초기화 대상 메모리 주소
// 인자 : c == 메모리의 초기화 초깃값
// 인자 : count == 초기화 대상 메모리의 바이트 단위 크기
// 반환값 : 없음
// 설명 : 동적 할당된 메모리엔 쓰레기값이 있으니, 주로 0으로 할당하여 씀!
// memset(pList, 0, sizeof(int)*3);

 

 

2. 메모리 복사 / 비교 / 검색

void *memcpy(void *dest, const void *src, size_t count);
// 인자 : dest == 복사될 대상 메모리 주소
// 인자 : src == 복사할 원본 데이터가 저장된 메모리 주소
// 인자 : count == 복사할 메모리의 바이트 단위 크기
// 반환값 : 대상 메모리의 주소
// 설명 : src 주소로 시작하는 일정 길이의 메모리에 저장된 값의 dest 로의 복사
// memcpy(szNewBuffer, szBuffer, sizeof(szBuffer));

int memcmp (const void *buf1, const void *buf2, size_t count);
// 인자 : buf1 == 비교 원본 메모리 주소
// 인자 : buf2 == 비교 대상 메모리 주소
// 인자 : count == 비교할 메모리의 바이트 단위 크기
// 반환값 : 0 -> 같은 값 
// 반환값 : 0UP -> buf1이 더 크다
// 반환값 : 0DOWN -> buf2가 더 크다
// 설명 : (첫 인자 주소의 메모리 저장값 - 두번째 인자 주소의 메모리 저장값) 으로 판별!
// memcmp("teststring", pszData, 10);

int strcmp (const char* string1, const char* string2);
// 인자 : string1, string2 == 비교할 문자열이 저장된 메모리 주소
// 반환값 : 0 -> 같은 문자열
// 반환값 : 0UP -> string1이 알파벳 상 나중
// 반환값 : 0DOWN -> string2가 알파벳 상 나중
// 설명 : 대소문자 식별하여 두 문자열이 같은가 판별
// strcmp("teststring", pszData);

char *strstr(const char *string, const char *strCharSet);
// 인자 : string == 검색 대상이 될 문자열이 저장된 메모리 주소
// 인자 : strCharSet == 특정 문자열이 저장된 메모리 주소
// 반환값 : 문자열 찾으면 해당 문자열의 메모리 주소 반환, 못찾으면 NULL 반환
// 설명 : 검색 대상 문자열에서 특정 문자열 검색하는 함수
// char szBuffer[32] = { "I am ironman" };
// strstr(szBuffer, "iron");

 

C언어 11단원.pdf
2.88MB

반응형

'프로그래밍 공부 > C언어' 카테고리의 다른 글

C언어 복습 <part3>  (0) 2020.03.12
C언어 복습 <part2>  (0) 2020.03.10
C언어 복습 <part1>  (0) 2020.03.09

댓글0