C++

[C++] 문자열 함수 / 메모리 함수

SeungHyune 2021. 11. 25. 18:22

문자열 함수

문자를 다루는 함수

 

1. 복사

strcpy_s(1, 2, 3)

1. 복사 받을 대상의 시작 주소

2. 몇 바이트 작업할 것인지 전달

3. 복사 할 대상의 시작 주소

 

 

 

 

 

2. 결합


strcat_s(1, 2, 3)
1 : 결합 받을 대상의 시작 주소

2 : 몇 바이트 작업할 것인지 전달
3 : 결합 할 대상의 시작 주소

 

 

 

3. 길이

strlen()

 

 

4. 비교

strcmp(비교대상 1, 비교대상 2)

두 문자열이 같으면 0을 반환, 다르면 0이 아닌 값을 반환

 

 

 

메모리 함수

메모리 단위로 작업(초기화 또는 복사)를 수행하는 함수

 

1. 초기화 함수

memset(1, 2, 3)

1 : 초기화할 메모리의 시작 주소

2 : 초기화할 데이터(값)

3. 시작 주소부터 몇 바이트 공간을 초기화할 것인지 전달

 

주의사항

byte단위로 초기화를 진행한다

-> 특정 값으로 초기화는 불가능하니 대부분 0으로 초기화하는 용도로 사용한다.

 

 

 

2. 메모리 단위 복사 함수

memcpy(1, 2, 3)

1 : 복사 받을 메모리의 시작 주소

2 : 복사할 메모리의 시작 주소

3: 몇 바이트 작업할 것인지 크기를 전달

 

 

3. 메모리 복사 함수

memmove(1, 2, 3)

1 : 복사 받을 메모리의 시작 주소

2 : 복사할 메모리의 시작 주소

3 : 몇 바이트 작업할 것인지 크기를 전달

 

int iArr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };


// 복사 받을 대상의 시작 주소 : iArr + 1
// -> 두 번재 원소부터 복사를 받아라!

// 복사할 메모리의 시작 주소 : iArr
// -> 첫 번재 원소부터 복사해라!

// 개선 전 : 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
// 개선 후 : 1, 1, 2, 3, 4, 5, 6, 7, 8, 9
memcpy(iArr + 1, iArr, sizeof(iArr) - sizeof(int));

// 1, 1, 2, 3, 4, 5, 6, 7, 8, 9
memmove(iArr + 1, iArr, sizeof(iArr) - sizeof(int));

 


 memcpy와 memmove의 차이점
 memcpy
 표준이 아니다.
 버퍼를 사용하지 않고 복사가 진행된다.

 memmove
 표준이다.
 버퍼를 사용해서 복사가 진행된다.