C์ธ์ด memset, memcpy ํจ์ ์ฌ์ฉ๋ฒ
C์ธ์ด์์ ๋ฐฐ์ด์ ๋ค๋ฃจ๊ธฐ ์ํ ์ฌ๋ฌ ํจ์๋ค์ด ์์ผ๋ฉฐ, ์ด ์ค์์ memset๊ณผ memcpy๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ์ค์ํ ํจ์์ด๋ค. ์ด๋ค ํจ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ฐฐ์ด ์กฐ์์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋๋ก ๋์์ค๋ค.
โญ1. memset ํจ์
void *memset(void *ptr, int value, size_t num);
- ptr: ์ค์ ํ๊ณ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฃผ์
- value: ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ํ ๊ฐ. intํ์ผ๋ก ์ ๋ฌ๋์ง๋ง, ์ค์ ๋ก๋ unsigned char๋ก ๋ณํ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
- num: value๋ก ์ค์ ํ ๋ฐ์ดํธ์ ์
#include <stdio.h>
#include <string.h>
int main() {
int array[10];
memset(array, 0, sizeof(array));
for(int i = 0; i < 10; i++) {
printf("%d ", array[i]);
}
return 0;
}
์ด ์์์์ memset์ array์ ๋ชจ๋ ์์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
์ฃผ์ ์ฌํญ์ผ๋ก int array[10] = {0,}; ์ด ์ฝ๋ ๋ํ ๊ฒฐ๊ณผ ๊ฐ์ 0์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํ์ผ๋ฌ๋ ์ฌ์ฉ์๊ฐ ๋ฐฐ์ด์ ์ด๊ธฐํํ์ง ์์ ๊ฒฝ์ฐ, 0์ผ๋ก ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ์ด๋ค. int array[10] = {0, }; ์ด ์ฝ๋๋ ์ฒซ ๋ฒ์งธ ์์์ ๊ฐ๋ง ์ฌ์ฉ์๊ฐ 0์ผ๋ก ์ด๊ธฐํํ๊ณ ๋๋จธ์ง ์์๋ค์ ์ปดํ์ผ๋ฌ์ ์ํด 0์ผ๋ก ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ์ ์ ๋ ์ข์ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
โญ2. memcpy ํจ์
memcpy ํจ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ผ์ ๊ตฌ์ญ์ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต์ฌํ ๋ ์ฌ์ฉํ๋ค. ์ด ํจ์๋ <string.h> ํค๋ ํ์ผ์ ์ ์ธ๋์ด ์๋ค. ํจ์์ ์ํ์ ๋ค์๊ณผ ๊ฐ๋ค.
void *memcpy(void *dest, const void *src, size_t num);
- dest: ๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋ ๋ชฉ์ ์ง ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฃผ์
- src: ๋ณต์ฌํ ๋ฐ์ดํฐ๊ฐ ์์นํ ์๋ณธ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฃผ์
- num: ๋ณต์ฌํ ๋ฐ์ดํธ์ ์
#include <stdio.h>
#include <string.h>
int main() {
int src[] = {1, 2, 3, 4, 5};
int dest[5];
memcpy(dest, src, sizeof(src));
for(int i = 0; i < 5; i++) {
printf("%d ", dest[i]);
}
return 0;
}
์ด ์์์์ memcpy๋ src ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ dest ๋ฐฐ์ด๋ก ๋ณต์ฌํ๋ค.
โญ3. ์ฅ์
- ์ฑ๋ฅ: memset๊ณผ memcpy๋ ์ ์์ค์์ ์ต์ ํ๋์ด ์์ด์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋ ๋ณต์ฌํ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
- ๊ฐ๊ฒฐ์ฑ: ์ด ํจ์๋ค์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ฐ๋ณต๋ฌธ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ง์ ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ: ์ด๋ฌํ ํจ์๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ์ฌ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ ์กฐ์๊ณผ ๊ด๋ จ๋ ๋ค์ํ ์์ ์์ ๋งค์ฐ ์ ์ฉํ๋ค.
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 11. C์ธ์ด ํฌ์ธํฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (1) | 2024.09.19 |
---|---|
[C/C++ Tip] 10. Call by Value vs Call by Reference (0) | 2024.09.14 |
[C/C++ Tip] 8. ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ (0) | 2024.09.07 |
[C/C++ Tip] 7. ๋ฐฐ์ด์ ๊ธฐ์ด (1) | 2024.09.04 |
[C/C++ Tip] 6. UNION ๊ณต์ฉ์ฒด์ STRUCT ๊ตฌ์กฐ์ฒด๋ก ํจํท ๋ง๋ค๊ธฐ (2) | 2024.09.04 |