์ด์ ์ ๊ณต๋ถํ๋ C์ธ์ด์์ ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ์ ๋ํ ์ฃผ์ ๋ก ํฌ์ธํฐ์ ๋ฐฐ์ด์ ๊ด๊ณ์ ๋ํด ์ ๋ฆฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐฐ์ด๊ณผ ํฌ์ธํฐ์ ๊ด๊ณ
C์ธ์ด๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด "๋ฐฐ์ด๊ณผ ํฌ์ธํฐ์ ๊ด๊ณ" ๊ฐ ์์ฃผ ๋ฑ์ฅํฉ๋๋ค. ๋ฐฐ์ด์ ์ด๋ฆ์ด ํฌ์ธํฐ์ ๊ฐ๋ค๊ณ ๋ ํ๊ณ , ๋ ๋ฐฐ์ด์ ์ด๋ฆ์ ์์๋ผ์ ๋ณ๊ฒฝํ ์ ์๋ค๊ณ ๋ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ฐฐ์ด์ ์ด๋ฆ์ ์ ๋ง ํฌ์ธํฐ์ผ๊น์? ์๋๋ฉด ๋จ์ํ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ํ๋ด๋ ๋ ๋ค๋ฅธ ๊ฐ๋ ์ผ๊น์?
์ด ์ง๋ฌธ์ ๋ํ ๋ต์ ์ฐพ์๋ณด๋ฉฐ, ๋ฐฐ์ด ์ด๋ฆ์ ์๋ฏธ์ ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ ์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ๋์ฉ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฐฐ์ด ์ด๋ฆ์ ์๋ฏธ
๋ฐฐ์ด์ ๊ฐ์ ์๋ฃํ์ ๋ณ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ ์ ์์ ์ค์ํ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค. ์ฆ, ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ์์ ํฌ์ธํฐ ์ ๋๋ค.
์ฝ๋ ์์
#include <stdio.h>
int main(void)
{
int arr[] = { 1,2,3,4,5 };
int i;
printf("๋ฐฐ์ด์ ์์ ์ถ๋ ฅ: ");
for (i = 0; i < 5; i++)
{
printf("%d ",arr[i]);
}
printf("\n\n");
printf("๋ฐฐ์ด์ ์ฃผ์ ์ถ๋ ฅ: ");
for (i=0; i<5; i++)
{
printf("%d ", &arr[i]);
}
printf("\n\n");
printf("๋ฐฐ์ด์ ์ด๋ฆ ์ถ๋ ฅ: %d\n", arr);
return 0;
}
๊ทธ๋ผ ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์ด๋ฆ์ด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ฃผ์๊ฐ๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ์๋ฏธ๋ ๋ฌด์์ผ๊น์?
๐ก ๊ฒฐ๊ณผ์์ ์ ์ ์๋ ์ฌ์ค
- ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
- arr == &arr[0]
- ๋ฐฐ์ด์ ์ด๋ฆ arr์ &arr[0]์ ๋์ผํ ์ฃผ์๊ฐ์ ๊ฐ์ง๋๋ค.
- ๋ค์ ์ ๋ฆฌํ์๋ฉด, ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ์์์ฃผ์๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ๋ฐฐ์ด์ด๋ฆ arr๋ &arr[0]๊ณผ ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
- ๋ฐฐ์ด ์ด๋ฆ์ ์์ ํฌ์ธํฐ๋ก ๋์ํฉ๋๋ค.
- ๋ฐฐ์ด์ ์ด๋ฆ์ ํฌ์ธํฐ์ฒ๋ผ ๋์ํ์ง๋ง, ์์๋ก ์ทจ๊ธ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, arr๋ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐฐ์ด์ ๋ค๋ฅธ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ํ์ง๋ง ์ผ๋ฐ ํฌ์ธํฐ์ ๋ฌ๋ฆฌ, ๋ฐฐ์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋ฐฐ์ด ์ด๋ฆ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ์ ์ ์ฌํ๊ฒ ์๋ํ๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ ์ฐ์ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด ๋ฐฐ์ด ์ด๋ฆ์ ์ฌ์ฉํด ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
๐ ์ผ๋ฐ ํฌ์ธํฐ์ ๋ฐฐ์ด ์ด๋ฆ์ ์ฐจ์ด
2๋ฒ์์๋ ์ธ๊ธํ๋ฏ์ด ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ญํ ์ ํ์ง๋ง, ์ผ๋ฐ์ ์ธ ํฌ์ธํฐ ๋ณ์์๋ ๋ค๋ฆ ๋๋ค. ๋ฐฐ์ด์ ์ด๋ฆ์ ์์ ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ์ฃผ์๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฐฐ์ด ์ด๋ฆ์ ์์ ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฝ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
#include <stdio.h>
int main(void)
{
int arr[] = {1, 2, 3, 4, 5};
int temp = 10;
arr = &temp; // ์ค๋ฅ ๋ฐ์: ๋ฐฐ์ด ์ด๋ฆ์ ์์์ด๋ฏ๋ก ์ฃผ์๊ฐ์ ๋ณ๊ฒฝํ ์ ์์
return 0;
}
๊ฒฐ๋ก ์ ์ผ๋ก
๋ฐฐ์ด์ ์ด๋ฆ์ด ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๊ฐ๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ๋ฐฐ์ด ์ด๋ฆ์ด ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์ ๋๋ค. ํ์ง๋ง ๋ฐฐ์ด ์ด๋ฆ ์์ฒด๋ ์์ ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์, ํด๋น ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ ๋์ ํ ์ ์์ต๋๋ค.
์ด ์ ์์ ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ์ ๋น์ทํ์ง๋ง, ๋์์ ์ค์ํ ์ฐจ์ด์ ์ด ์กด์ฌํฉ๋๋ค.
2. ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉํ๊ธฐ
๋ฐฐ์ด ์ด๋ฆ์ด ํฌ์ธํฐ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์, ํฌ์ธํฐ ์ฐ์ฐ์ ํตํด ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
์ฝ๋ ์์
#include <stdio.h>
int main(void)
{
int arr[] = {1, 2, 3, 4, 5};
printf("๋ฐฐ์ด์ ์์ ์ถ๋ ฅ: ");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]); // ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด ์ ๊ทผ
}
printf("\n");
printf("ํฌ์ธํฐ ์ฐ์ฐ์ผ๋ก ๋ฐฐ์ด์ ์์ ์ถ๋ ฅ: ");
for (int i = 0; i < 5; i++) {
printf("%d ", *(arr + i)); // ํฌ์ธํฐ ์ฐ์ฐ์ ์ด์ฉํ ๋ฐฐ์ด ์ ๊ทผ
}
printf("\n");
printf("arr + 1์ด ๊ฐ๋ฆฌํค๋ ๊ฐ: %d\n", *(arr + 1)); // arr + 1์ด ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๊ฐ์ 2
return 0;
}
๐ก ๊ฒฐ๊ณผ์์ ์ ์ ์๋ ์ฌ์ค
- ๋ฐฐ์ด์ ์ด๋ฆ์ ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, *(arr + i)๋ก ๋ฐฐ์ด์ ์์์ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
- arr[i] ์ *(arr + i)๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ฐฐ์ด์ ์ด๋ฆ์ ํตํด ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ ์ธ ์์น์ ์๋ ์์์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก
๋ฐฐ์ด์ ์ด๋ฆ์ ์์ ํฌ์ธํฐ๋ก์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๊ฐ์ ๋ํ๋ด๊ณ , ๋ฐฐ์ด์ ์ด๋ฆ์ ํตํด ํฌ์ธํฐ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์์์ ์ ๊ทผ ํ ์ ์์ต๋๋ค. ์์์๋ ์ธ๊ธํ๋ฏ์ด ๋ฐฐ์ด ์ด๋ฆ๊ณผ ์ผ๋ฐ ํฌ์ธํฐ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐฐ์ด ์ด๋ฆ์ ์ฃผ์๊ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํ๋ ์ ์ ๋๋ค.
2.1 ์ฌ๊ธฐ์ ๊ถ๊ธ์ฆ ํด๊ฒฐ: ์ฃผ์๊ฐ ์ถ๋ ฅ ์ ์์(-)๊ฐ ๋์ค๋ ์ด์ ?
๋ฐฐ์ด ์์๊ฐ int ์ ๊ฐ์ ์ ์ํ์ผ๋, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๊ฐ ์์์ ํฌ๊ธฐ(์: 4๋ฐ์ดํธ) ๋งํผ ์ฆ๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ถ๋ ฅ๋๋ ์ฃผ์๊ฐ์ด ํน์ ๋ฒ์๋ฅผ ๋์ด ์์์ฒ๋ผ ๋ณด์ด๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ ์ค๋ฒํ๋ก์ฐ(Overflow) ๋๋ฌธ์ ๋๋ค.
์ค๋ฒํ๋ก์ฐ๋?
์ปดํจํฐ์์ ์ฃผ์๊ฐ์ด๋ ์ ์์ ๋ฒ์๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ฉด, ๊ฐ์ด ์์๋ก ๋ณด์ผ ์ ์์ต๋๋ค. ์ด๋ 2์ ๋ณด์ ํํ์ ์ฌ์ฉํ๋ ์ปดํจํฐ์ ํน์ฑ ๋๋ฌธ์ ๋๋ค.
2์ ๋ณด์์ ๊ฐ ๋ณํ๊ณผ์
- ์ปดํจํฐ๋ ๊ฐ์ ์ ์ฅํ ๋ 2์ ๋ณด์ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
- 128์ 8๋นํธ์์ 1000 000 ์ผ๋ก ํํ๋ฉ๋๋ค. ์ด ๊ฐ์ ๋ถํธ ์๋ ์ ์์์ -128์ ๋ํ๋ ๋๋ค.
- ๋ฐ๋ผ์, ์ฝ๋์์ char ch = 128; ์ ์ ์ฅํ๋ฉด ์ค์ ๋ก ch์ ๊ฐ์ -128์ด ๋ฉ๋๋ค.
๐char ch = 128;์์ ์ฃผ์๊ฐ ์ถ๋ ฅ์ ์์๊ฐ์ด ๋์ค๋ ์
C ์ธ์ด์์ char ์๋ฃํ์ 1๋ฐ์ดํธ(8๋นํธ) ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ฐ์ ๋ฒ์๋ ๋ค์ ๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค:
- ๋ถํธ๊ฐ ์๋ signed char: -128 ~ 127
- ๋ถํธ๊ฐ ์๋ unsigned char: 0 ~ 255
๐ ๋ถํธ ์๋ char์ ๊ฐ ๋ฒ์์ ์ํ๊ตฌ์กฐ
C ์ธ์ด์์ ๋ถํธ ์๋ char ์๋ฃํ(signed char)์ ๊ฐ์ ๋ฒ์๊ฐ -128 ~ 127๋ก ํ์ ๋ฉ๋๋ค. ์ด ๋ฒ์๋ ์ํ ๊ตฌ์กฐ๋ก ๋์ํ๋ฉฐ, ๊ทธ๋ฆผ์ฒ๋ผ +127์์ ๋ค์ -128๋ก ์ํ๋ฉ๋๋ค.
char ch = 128; ์ ๋์ ์ ๋ฆฌ๋ด์ฉ
- char ์๋ฃํ์ 8๋นํธ(1๋ฐ์ดํธ)๋ก, ์ ์ฅ ๊ฐ๋ฅํ ๋ฒ์๋ -128 ~ 127์ ๋๋ค.
- 128์ ์ด ๋ฒ์๋ฅผ ์ด๊ณผํ๋ฏ๋ก, ๊ฐ์ด ์ํํ๊ฒ ๋ฉ๋๋ค.
- +127์์ ๋ค์ ๋์ค๋ฉด -128์ด ๋ฉ๋๋ค.
- ๊ทธ๋ฆผ์์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ, 128์ +127์์ ํ ์นธ ๋ ์ด๋ํ๋ฉด -128์ ํด๋นํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก
- char ch = 128; ์ +127์ ์ด๊ณผํ๊ธฐ ๋๋ฌธ์ ์์ ๋ฐ๋ผ -128๋ก ์ด๋ํ์ต๋๋ค.
- ์ด๋ ๋ถํธ ์๋ char ์๋ฃํ์ ๊ฐ ๋ฒ์์ ์ํ ๊ตฌ์กฐ๋ก ์ธํด ๋ฐ์ํ ๊ฒฐ๊ณผ์ ๋๋ค.
์ํ, ์ฌ๊ธฐ์ ์์์ต๋๋ค. 128์ด -128์ด ๋ ์ด์ ๋, char ์๋ฃํ์ ๊ฐ์ด ์ํ์ผ๋ก ์ํ๋๊ธฐ ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ !! ๐
3. ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ๊ธฐ
์ด๋ฒ์๋ ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ ์ด๋ฆ์ฒ๋ผ...?? ๋ฐฐ์ด ์ด๋ฆ์ด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๊ฐ์ ๋ํ๋ธ๋ค๋ ์ ์์, ํฌ์ธํฐ๋ ๋์ผํ ์ญํ ์ ์ํํ ์ ์์ต๋๋ค.
๋ฐฐ์ด์ ์ด๋ฆ์ ์์ ํฌ์ธํฐ์ฒ๋ผ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ๋ฐ๋ผ์, ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ ๋ณ์์ ๋์ ํ๋ฉด ํฌ์ธํฐ ๋ณ์๋ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ง์น ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๋ ์์
#include <stdio.h>
int main(void)
{
int arr[] = {1, 2, 3, 4, 5}; // ๋ฐฐ์ด ์ ์ธ
int *pTemp; // ํฌ์ธํฐ ๋ณ์ ์ ์ธ
int i;
pTemp = arr; // ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ ๋ณ์์ ๋์
printf("๋ฐฐ์ด์ ์์ ์ถ๋ ฅ: "); // ๋ฐฐ์ด์ ์์ ์ถ๋ ฅ: 1 2 3 4 5
for (i = 0; i < 5; i++) {
printf("%d ", pTemp[i]); // ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ
}
printf("\n");
return 0;
}
๐ก ๊ฒฐ๊ณผ์์ ์ ์ ์๋ ์ฌ์ค
- ํฌ์ธํฐ๋ ๋ฐฐ์ด์ฒ๋ผ ๋์ํ ์ ์์ต๋๋ค.
- ํฌ์ธํฐ ๋ณ์(pTemp)๋ฅผ ๋ฐฐ์ด ์ด๋ฆ์ฒ๋ผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, pTemp[i]๋ ํฌ์ธํฐ ์ฐ์ฐ์ธ *(pTemp + i) ์ ๋์ผํฉ๋๋ค.
- ํฌ์ธํฐ์ ๋ฐฐ์ด ์ด๋ฆ์ ์ญํ ์ ์ ์ฌํฉ๋๋ค.
- ๋ฐฐ์ด์ ์ด๋ฆ(arr)์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, pTemp = arr; ์ ํตํด ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ํฌ์ธํฐ ๋ณ์๋ก ์ ๋ฌ ํ ์ ์์ต๋๋ค.
- ํฌ์ธํฐ๋ ์ดํ ๋ฐฐ์ด ์ด๋ฆ์ฒ๋ผ ๋์ํฉ๋๋ค.
- ๋ฐฐ์ด์ ์์ ์ ๊ทผ ๋ฐฉ์์ด ๋์ผํฉ๋๋ค.
- ๋ฐฐ์ด ์ด๋ฆ์ ์ฌ์ฉํ ์ ๊ทผ: arr[i]
- ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ์ ๊ทผ: pTemp[i]
- ๋ ๋ฐฉ์ ๋ชจ๋ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
- ๋ฐฐ์ด ์ด๋ฆ์ ์์ ํฌ์ธํฐ, ํฌ์ธํฐ ๋ณ์๋ ๊ฐ๋ณ ํฌ์ธํฐ
- ๋ฐฐ์ด ์ด๋ฆ์ ๊ณ ์ ๋ ์์ ํฌ์ธํฐ๋ก, ๋ค๋ฅธ ์ฃผ์๋ฅผ ๋์ ํ ์ ์์ต๋๋ค.
- ๋ฐ๋ฉด, ํฌ์ธํฐ ๋ณ์(pTemp)๋ ๋ค๋ฅธ ๋ฐฐ์ด์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํจ์จ์ฑ
- ๋ฐฐ์ด ์ด๋ฆ๊ณผ ํฌ์ธํฐ ๋ชจ๋ ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ๋ ๋ฐ ์์ด์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ฏ๋ก, ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ฐจ์ด์ ์์ฝ
๊ตฌ๋ถ | ๋ฐฐ์ด ์ด๋ฆ์ ํฌ์ธํฐ์ฒ๋ผ | ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ |
๋์ | ๋ฐฐ์ด ์ด๋ฆ ์์ฒด | ํฌ์ธํฐ ๋ณ์ |
์ด์ | ๋ฐฐ์ด ์ด๋ฆ์ ์ญํ ์ ํฌ์ธํฐ๋ก ํด์ํ๋ ๋ฐฉ์ (์์ ํฌ์ธํฐ) |
ํฌ์ธํฐ ๋ณ์๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ๋์์ํค๋ ํ์ฉ๋ฐฉ์ (๋์ ๋์ ๊ฐ๋ฅ) |
์ฐ์ฐ ๋ฐฉ์ | *(arr+i)๋ก ๋ฐฐ์ด ์์์ ์ ๊ทผ | pTemp[i]๋ก ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ |
์์ | arr[i], *(arr+i) | pTemp[i], *(pTemp + i) |
โ ๏ธ์ถ๊ฐ์ ์ผ๋ก ์ฃผ์ํ ์
ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฐ์ ์ฐธ์กฐํ๋ฉด Undefined Behavior(์๋๊ฐ ๋ช ํํ์ง์์ ์ฝ๋)์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ ํํ ์๊ณ , ๋ฐ๋ณต๋ฌธ์์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ์ฃผ์ํด์ผํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก
- ๋ฐฐ์ด ์ด๋ฆ์ ์์ ํฌ์ธํฐ๋ก์, ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๋ํ๋ด์ง๋ง ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋ฐ๋ฉด, ํฌ์ธํฐ ๋ณ์๋ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์์ ๋ฟ๋ง ์๋๋ผ, ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ฑฐ๋ ์๋ก์ด ์ฃผ์๋ฅผ ๋์ ํ๋ ๋ฐ ํ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐ์ด ์ด๋ฆ์ ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๊ณ , ํฌ์ธํฐ๋ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋ ๋ฐฐ์ด์ฒ๋ผ ํ์ฉ ํ ๋ ๋ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.