ํฌ์ธํฐ์ ๋ฐฐ์ด์ ๊ด๊ณ
- ๋ฐฐ์ด์ ์๋ฃํ์ด ๊ฐ์ ๋ณ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ผ๋ก ํ ๋นํ ๊ฒ์ด๋ค.
- ๋ฐ๋ผ์ ๊ฐ ๋ฐฐ์ด ์์๋ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ฃผ์๋ฅผ ๊ฐ๋๋ค.
์๋ฅผ ๋ค์ด, int arr[4];์ ๋ฐฐ์ด์ด ๋ฉ๋ชจ๋ฆฌ 100๋ฒ์ง๋ถํฐ ํ ๋น๋์ด ์๋ค๋ฉด
intํ ๋ณ์๋ 4๋ฐ์ดํธ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ฐฐ์ด ์์์ ์ฃผ์๋ 100, 104, 108, 112๋ฒ์ง๊ฐ ๋ฉ๋๋ค.
- โถ ๊ฒฐ๊ตญ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ฅผ ์๋ฉด ๋๋จธ์ง ์์์ ์ฃผ์๋ ์ฝ๊ฒ ์ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๋ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ๋๋ก ๋ฐฐ์ด๋ช ์ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด ์์์ ์ฃผ์๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- ์ฆ, ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ์ฃผ์ ๊ฐ์ด๋ค.
#include <Stdio.h>
int main(void)
{
int arr[3] = {1,2,3};
printf("๋ฐฐ์ด์ ์ด๋ฆ : %p\n", arr);
printf("๋ฐฐ์ด์ ์ด๋ฆ : %p\n", &arr[0]);
printf("๋ฐฐ์ด์ ์ด๋ฆ : %p\n", &arr[1]);
printf("๋ฐฐ์ด์ ์ด๋ฆ : %p\n", &arr[2]);
return 0;
}
์คํ๊ฒฐ๊ณผ
๋ฐฐ์ด์ ์ด๋ฆ : 005AFA14
์ฒซ ๋ฒ์งธ ์์ : 005AFA14
๋ ๋ฒ์งธ ์์ : 005AFA18
์ธ ๋ฒ์งธ ์์ : 005AFA1C
- ๋ฐฐ์ด์ ์ฒซ ๋ฒ์ฌ ์ฃผ์๊ฐ์ด 005AFA14์ธ๋ฐ, ๋ฐฐ์ด์ ์ด๋ฆ์ ์ถ๋ ฅํ ๊ฒฐ๊ณผ๋ 005AFA14๋ก ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ต๋๋ค.
- ์ฃผ์๊ฐ์ ์ ์ฅํ ์ ์๋ ๋ณ์๋ ํฌ์ธํฐ ๋ณ์๋ฟ์ ๋๋ค.
- ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์ด๋ฆ์ ํฌ์ธํฐ ๋ณ์์์ ์ ์ ์๋ค.
- ํ์ง๋ง ๋ฐฐ์ด์ ์ด๋ฆ์ ๊ฐ์ ์ ์ฅ์ด ๋ถ๊ฐ๋ฅํ๊ณ (๋์ ์ฐ์ฐ์์ ํผ์ฐ์ฌ์๊ฐ ๋ ์ ์๋ค).
- ์ฃผ์ ๊ฐ์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. โถ ๊ทธ๋์ ๋ฐฐ์ด์ ์ด๋ฆ์ '์์ ํํ์ ํฌ์ธํฐ'. 'ํฌ์ธํฐ ์์'๋ผ๊ณ ๋ถ๋ฅธ๋ค
ํฌ์ธํฐ ์ฐ์ฐ
- ํฌ์ธํฐ ์ฐ์ฐ์ +, - , ++, -- ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ธํฐ ๊ฐ์ ์ฆ๊ฐ/๊ฐ์์ํค๋ ์ฐ์ฐ์ด๋ค.
- ํฌ์ธํฐ๋ก ๊ณฑ์ ์ด๋ ๋๋์ ์ ์๋๋ค.
- ์๋ฅผ ๋ค์ด ํฌ๊ธฐ๊ฐ 4๋ฐ์ดํธ์ธ intํ ๋ณ์์ ์ฃผ์ 100๋ฒ์ง์ 1์ ๋ํ ๊ฒฐ๊ณผ๋ 101์ด ์๋ 104๊ฐ ๋๋ค.
- ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ํ ์ฃผ์์ด๋ค.
#include <stdio.h>
int main(void){
char * ptr1 = 0; // 0๋์ NULL์ ์ฌ์ฉํด๋ ๋๋ค.
int * ptr2 = 0;
double * ptr3 = 0;
printf("%d๋ฒ์ง, %d๋ฒ์ง, %d๋ฒ์ง\n",ptr1,ptr2,ptr3);
ptr1++;
ptr2++;
ptr3++;
printf("%d๋ฒ์ง, %d๋ฒ์ง, %d๋ฒ์ง\n", ptr1,ptr2,ptr3);
return 0;
}
์คํ๊ฒฐ๊ณผ
0๋ฒ์ง, 0๋ฒ์ง, 0๋ฒ์ง
1๋ฒ์ง, 4๋ฒ์ง, 8๋ฒ์ง
- ์ด๋ฌํ ํฌ์ธํฐ์ ์ฐ์ฐ ํน์ฑ์ผ๋ก ์ธํด์ ๋ฐฐ์ด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
#include <stdio.h>
int main(void){
int arr[5] = {1,2,3,4,5};
int * ptr = arr;
printf("%d %d %d %d %d\n",*ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4));
printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
return 0;
}
์คํ๊ฒฐ๊ณผ
1 2 3 4 5
1 2 3 4 5
โถ *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4)์ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ arr[0], arr[1], arr[2], arr[3], arr[4]์ ์ถ๋ ฅ๊ฒฐ๊ณผ์ ๋ชจ๋ ๋์ผํ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ ๋๋ค.
- ๋ฐฐ์ด์ ์ด๋ฆ๊ณผ ํฌ์ธํฐ ๋ณ์๋ ์์, ๋ณ์์ ์ฐจ์ด๋ง ์์ ๋ฟ, ์ฌ์ค์ ๋์ผํ๋ค.
#include <stdio.h>
int main(void)
{
int arr[3] = {1, 2, 3};
int * ptr = arr;
printf("%d %d %d\n", *ptr, *(ptr+1), *(ptr+2));
printf("%d %d %d\n", ptr[0], ptr[1], ptr[2]);
printf("%d %d %d\n", *arr, *(arr + 1), *(arr + 2));
printf("%d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
์คํ๊ฒฐ๊ณผ
1 2 3
1 2 3
1 2 3
1 2 3
โ ์ด๋ฅผ ํตํด arr[i] == *(arr+i)๋ผ๋ ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์์ต๋๋ค. โ
ํฌ์ธํฐ ๋ฐฐ์ด
- ํฌ์ธํฐ ๋ฐฐ์ด์ด๋ ๋ฐฐ์ด ์์๋ก ํฌ์ธํฐ ๋ณ์๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด์ ์๋ฏธํ๋ค.
- ์ฆ, ํฌ์ธํฐ ๋ณ์๋ก ์ด๋ฃจ์ด์ง '๋ฐฐ์ด'์ ์๋ฏธํ๋ค.
- ๊ธฐ๋ณธ ์๋ฃํ ๋ฐฐ์ด๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ง๋ง ์ฃผ์๊ฐ์ ์ ์ฅํ ์ ์๋ ํฌ์ธํฐ ๋ณ์๋ฅผ ๋์์ผ๋ก ์ ์ธ๋ ๋ฐฐ์ด์ผ ๋ฟ์ด๋ค.
- โ ํฌ์ธํฐ ๋ฐฐ์ด์ ์ ์ธํ ๋๋ ๋ฐฐ์ด ์์์ ์๋ฃํ์ด ํฌ์ธํฐํ์ด๋ฏ๋ก ๋ฐฐ์ด์ด๋ฆ ์์ *์ ๋ถ์ด๋ฉด ๋๋ค.
#include <stdio.h>
int main(void)
{
int num1 = 1, num2 = 2, num3 = 3;
int * arr[3] = { &num1, &num2, &num3}; // ํฌ์ธํฐ ๋ฐฐ์ด ์ ์ธ ๋ฐ ์ด๊ธฐํ
printf("์ฃผ์๊ฐ : %p %p %p\n", arr[0], arr[1], arr[2]);
printf("๊ฐ : %d %d %d\n", *arr[0], *arr[1], *arr[2]);
return 0;
}
์คํ๊ฒฐ๊ณผ
์ฃผ์๊ฐ : 00EFFB24 00EFFB18 00EFFB0C
๊ฐ : 1 2 3
โถ ํฌ์ธํฐ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ํด์ ์์นํ์ง๋ง ํฌ์ธํฐ ๋ฐฐ์ด์ ์ ์ฅ๋ ์ฃผ์๊ฐ์ ์ฐ์์ฑ์ ์ง๋์ง ์์ต๋๋ค.
- ํฌ์ธํฐ ๋ฐฐ์ด์ ๋ฌธ์์ด์ ์ ์ฅํ ์ ์๋ค.
- ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ฌธ์์ด์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด๋ก์ ์ฌ์ค charํ ํฌ์ธํฐ ๋ฐฐ์ด์ด๋ค.
- " "ํฐ ๋ฐ์ดํ๋ก ๋ฌถ์ธ ๋ฌธ์์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋ ํ ๊ทธ ์ฃผ์๊ฐ์ด ๋ฐํ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ ์ฃผ์๋ฅผ ์๋ ค์ค๋ค.
- ๋ฐํ๋ ๋ฌธ์์ด์ ์ฃผ์๊ฐ์ ๋ฌธ์์ด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ฃผ์์ด๋ค.
#include <stdio.h>
int main(void)
{
// ๋ฌธ์์ด ๋ฐฐ์ด ์ ์ธ ๋ฐ ์ด๊ธฐํ
char * strarr[3] = {"sejong", "university", "computer"};
printf("%s %s %s\n", strarr[0], strarr[1], strarr[2]);
return 0;
}
โถ ํฌ์ธํฐ ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ฌธ์์ด ์์๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ์ฃผ์๊ฐ์ ์ ์ฅํ๊ณ ๊ทธ ๋ฌธ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋ฐ๋ผ์ ์ด ๊ฐ์ ๋ณํ๋ฌธ์ %s๋ก ์ถ๋ ฅํ๋ฉด null ๋ฌธ์๊ฐ ๋์ฌ ๋๊น์ง ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฐจ๋ก๋ก ์ถ๋ ฅํ๋ฏ๋ก ํ๋์ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ค.
๋ฐฐ์ด ํฌ์ธํฐ
- ๋ฐฐ์ด ํฌ์ธํฐ๋ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํฌ ์ ์๋ ํฌ์ธํฐ๋ฅผ ์๋ฏธ
- 1์ฐจ์ ๋ฐฐ์ด์ ์ด๋ฆ ์์ฒด๊ฐ ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ํฌ์ธํฐ๊ฐ ํ์ ์๋ค.
- ํ์ง๋ง 2์ฐจ์ ๋ฐฐ์ด์ ์ด๋ฆ ์์ฒด๋ก ํฌ์ธํฐ์ ์ญํ ์ ํ ์ ์๋ค.
- ๋ฐฐ์ด ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ 2์ฐจ์ ์ด์์ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํฌ ๋ ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ์ํด์
- ๋ฐ๋ผ์ ๋ฐฐ์ด ํฌ์ธํฐ๋ 2์ฐจ์ ์ด์์ ๋ฐฐ์ด์์๋ง ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
#include <stdio.h>
int main(void)
{
int arr2d[2][3] = {
{10, 20, 30},
{40, 50, 60},
};
printf("%d %d\n", *arr2d[0], *arr2d[1]);
return 0;
}
์คํ๊ฒฐ๊ณผ
10 40
- arr2d[0]๊ณผ arr2d[1]์ ๊ฐ ๋ถ๋ถ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- arr2d[0]์ 2์ฐจ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ํ์ ์๋ฏธํ๊ณ , arr2d[1]์ ๋ ๋ฒ์งธ ํ์ ์๋ฏธํ๋ค.
<๋ฐฐ์ด ํฌ์ธํฐ ์ ์>
์๋ฃํ (*ํฌ์ธํฐ์ด๋ฆ)[๊ฐ๋ก(ํ)๊ธธ์ด]
! ํฌ์ธํฐ๊ฐ ์๋ฃํ ์ชฝ์ ๋ถ๋ ๊ฒ ์๋๋ผ ํฌ์ธํฐ๋ณ์์ด๋ฆ ์ชฝ์ ์๊ดํธ ์์ ๋ถ๊ฒ ๋๋ค.
- int: ๊ฐ๋ฆฌํฌ ์ ์๋ ๋์์ ๋ํ ์ ๋ณด(์ฆ, intํ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ)๋ฅผ ์๋ฏธ
- (*ptr): ptr์ ํฌ์ธํฐ์์ ์๋ฏธ
- [3]: ํฌ์ธํฐ ์ฐ์ฐ์ ๋ฐ๋ฅธ ์ฆ๊ฐ/๊ฐ์์ ํญ์ด๋ค. (๊ฐ์ 1 ์ฆ๊ฐ ์ intํ์ด๋ฏ๋ก 4๋ฐ์ดํธ*3 = 12๋ฐ์ดํธ ์ด๋)
#include <stdio.h>
int main(void)
{
int arr2d[2][3] = {
{10, 20, 30},
{40, 50, 60},
};
int i, j;
int (*ptr)[3] = arr2d; // ๋ฐฐ์ด ํฌ์ธํฐ ์ ์ธ
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
printf("%d ", ptr[i][j]); // ๋ฐฐ์ด ํฌ์ธํฐ๋ก ์ฐธ์กฐ
printf("\n");
}
return 0;
}
์คํ๊ฒฐ๊ณผ
10 20 30
40 50 60
- 1์ฐจ์ ๋ฐฐ์ด์์ arr[i] == *(arr+i)๋ผ๋ ๋ฌธ์ฅ์ด ์ฑ๋ฆฝํ๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก 2์ฐจ์๋ฐฐ์ด์์๋ arr[i] == *(arr+i)์ด๋ค.
#include <stdio.h>
int main(void)
{
int arr2d[2][3] = {
{10, 20, 30},
{40, 40, 50},
};
int i, j;
for (i = 0; i < 2 ; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", arr2d[i][j]);
printf("%d ", (*(arr2d + i))[j]);
printf("%d ", *(arr2d[i] + j));
printf("%d\n", *(*(arr2d + i) + j));
}
}
return 0;
}
์คํ๊ฒฐ๊ณผ
10 10 10 10
20 20 20 20
30 30 30 30
40 40 40 40
50 50 50 50
60 60 60 60
ํฌ์ธํฐ ๋ฐฐ์ด / ๋ฐฐ์ด ํฌ์ธํฐ ์ฐจ์ด
- ํฌ์ธํฐ ๋ฐฐ์ด: ์ฃผ์๊ฐ๋ค์ ์ ์ฅํ๋ '๋ฐฐ์ด'
- ๋ฐฐ์ด ํฌ์ธํฐ: ๋ฐฐ์ด์ ์์์ฃผ์๊ฐ์ ์ ์ฅํ ์ ์๋ 'ํฌ์ธํฐ'
- ์ผ์ชฝ์ intํ ๋ณ์๋ก ์ด๋ฃจ์ด์ง intํ ํฌ์ธํฐ ๋ฐฐ์ด
- ์ค๋ฅธ์ชฝ์ ๊ฐ๋ก๊ธธ์ด๊ธฐ 3์ธ intํ 2์ฐจ์ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๋ณ์
โถ ( ) ๊ดํธ์ ์ ๋ฌด๊ฐ ์ค์
์ถ์ฒ: https://sejong-kr.libguides.com/c.php?g=942235&p=6822367
'ํ๋ก๊ทธ๋๋ฐ > C์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ตฌ์กฐ์ฒด (0) | 2024.08.21 |
---|---|
ํฌ์ธํฐ & ํจ์ (0) | 2024.08.16 |
ํฌ์ธํฐ (0) | 2024.08.15 |
๋ฐฐ์ด (0) | 2024.08.14 |
ํจ์ (0) | 2024.08.14 |