| 1์ฐจ์ ๋ฐฐ์ด ๊ฐ๋ฆฌํค๊ธฐ |
- arr++ : ์ค๋ฅ ('++'์ l-value๊ฐ ํ์ํฉ๋๋ค.)
โต arr์ด ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฅดํค๋ ์ฃผ์๊ฐ ์์ฒด๊ฐ ๋๋ ๊ฒ์ด์ง ํฌ์ธํฐ๊ฐ์๋๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅ
| ํฌ์ธํฐ์ ํฌ์ธํฐ |
ํฌ์ธํฐ ์ ์ int **p; =>intํ ๋ณ์๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ
*p : p๋ผ๋ ํฌ์ธํฐ์ ์๋ ์ฃผ์์ ์์นํ๊ณ ์๋ ๊ฐ(๋ฐ์ดํฐ)
| ๋ฐฐ์ด ์ด๋ฆ์ ์ฃผ์๊ฐ |
#include <stdio.h>
int main() {
int arr[3] = {1, 2, 3};
int (*parr)[3] = &arr;
printf("arr[1] : %d \n", arr[1]);
printf("parr[1] : %d \n", (*parr)[1]);
}
&arr : ํฌ๊ธฐ๊ฐ 3์ธ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ( ex. int (*p)[3];๋ก ์ ์ )์ ๋ณด๊ดํ ์ ์๋ค.
โ> () ์์ผ๋ฉด int *p[3]; :ํฌ๊ธฐ๊ฐ int* ์์(ํฌ์ธํฐ) 3๊ฐ์ธ ๋ฐฐ์ด์ ์ ์ ํ ๊ฒ(ํฌ์ธํฐ์ ๋ฐฐ์ด).
โป C์ธ์ด์์๋ ๋ฐฐ์ด์ ์์์ ์ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ(arr)์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ ์ฅํ์ง ์์-> 'arr'์ ์ฃผ์๊ฐ์ ์์.
(B์ธ์ด ์์๋ 'arr'์ ์ฃผ์๊ฐ์ ๋ฐ๋ก ๊ฐ์ก์. ์ฆ, arr๊ณผ &arr์ด ๋ค๋ฅธ ๊ฐ ์ถ๋ ฅ๋์)
| 2์ฐจ์ ๋ฐฐ์ด์ [ ] ์ฐ์ฐ์ |
- arr[ ][ ] (2์ฐจ์ ๋ฐฐ์ด์์)
arr[0] ์ ๊ฐ๊ณผ arr[0][0]์ ์ฃผ์๊ฐ์ด ๊ฐ๊ณ , arr[1] ์ ๊ฐ๊ณผ arr[1][0]์ ์ฃผ์๊ฐ์ด ๊ฐ์.
๊ฐ์ ๊ฐ์ผ๋ ์์ฐํ ๋ค๋ฅธ ๊ฒ. ์๋ฌต์ ์ผ๋ก ํ์ ๋ณํ์์ ๊ฐ์ ํฌ์ธํฐ๋ก ๋ณํ๋ ๋ฟ์
- sizeof arr : ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ก ๋ณํ๋์ง ์์
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
printf("์ ์ฒด ํฌ๊ธฐ : %d \n", sizeof(arr));
printf("์ด ์ด์ ๊ฐ์ : %d \n", sizeof(arr[0]) / sizeof(arr[0][0]));
printf("์ด ํ์ ๊ฐ์ : %d \n", sizeof(arr) / sizeof(arr[0]));
}
sizeof(arr) : arr๋ผ๋ ๋ฐฐ์ด์ ์ ์ฒด ํฌ๊ธฐ = ์์ ์ * ํ ์์์ ํฌ๊ธฐ(32bit์์๋ 4byte)
sizeof(arr[0]) : arr[0] ๋ฐฐ์ด์ ํฌ๊ธฐ. ๋ง์น ์ผ์ฐจ ๋ฐฐ์ด๊ฐ์ด..(arr[0][0]~arr[0][3])
sizeof(arr[0][0]) : ์์ arr[0][0] 1๊ฐ์ ์ ํฌ๊ธฐ
=> sizeof ์ฐ์ฐ์๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ์ ์์
* 2์ฐจ์ ๋ฐฐ์ด์์ arr[ํ์ ๊ฐ์][์ด์ ๊ฐ์];
- arr[0][0]์ ํ์ด int์ด๋ฏ๋ก ์ด๋ฅผ ๊ฐ๋ฅดํค๋ ์ฃผ์ ๊ฐ์ด ๋๋ arr[0]์ int*ํ์ด ๋จ
arr[1][0]์ ํ๋ int์ด๋ฏ๋ก ์ด๋ฅผ ๊ฐ๋ฅดํค๋ ์ฃผ์ ๊ฐ์ด ๋๋ arr[1]์ญ์ int*ํ ์.
- int** ํ ํฌ์ธํฐ๋ ๋ฐฐ์ด์ ์ด๋ฆ์ ๊ฐ๋ฆฌํฌ ์ ์์,(๊ฐ๋ฅํ๋ค๋ฉด int** ํ ํฌ์ธํฐ๋ก ๋ฐฐ์ด์ ์์์ ์ ๊ทผ ๊ฐ๋ฅ ํ๊ฒ ์ง...)
| ํฌ์ธํฐ์ ํ(type)์ ๊ฒฐ์ ์ง๋ ๋ ๊ฐ์ง ์์ |
*ํฌ์ธํฐ๋ฅผ ํตํด 2์ฐจ์ ๋ฐฐ์ด์ ์์์ ์ ๊ทผ ํ๊ธฐ ์ํด์๋ ๋ฐฐ์ด์ '์ด์ ๊ฐฏ์'์ ๋ํ ์ ๋ณด๊ฐ ์์ด์ผํจ.
ex) arr[a][b]๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ(parr)๋ก arr[x][y] ์์์ ์ ๊ทผํ๋ ๊ฒ์ 'arr + 4bx + 4y'์ ๊ฐ์.
๋ฐ๋ผ์, 2์ฐจ์ ๋ฐฐ์ด์ ํฌ์ธํฐ๋ ์ด์ ๊ฐฏ์์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ ์๋์ ๊ฐ์ด
int (*parr)[3]; /* intํ ์ด์ฐจ์ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํค๋๋ฐ, ๊ทธ ๋ฐฐ์ด ํ ํ์ ๊ธธ์ด(์ด์ ๊ฐฏ์)๊ฐ 3์ */
๋ฐฐ์ด์ํ (*ํฌ์ธํฐ์ด๋ฆ)[2์ฐจ์๋ฐฐ์ด์ ์ด ๊ฐฏ์]; ๋ก ์ ์ํ๋ค.
=> ์ฌ๊ธฐ์ parr์ ์ด์ ๊ฐฏ์๊ฐ 3์ธ ๋ฐฐ์ด๋ง ๋ฐ์ ์ ์๋ค. ex) arr[50][3] ๊ฐ๋ฅ, brr[50][2] ๋ถ๊ฐ๋ฅ
'Programming Languages > ๋ชจ๋์ ์ฝ๋ | ์น์ด๋จน๋ C์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
13 - 1. ๋ง์ ์์ ํจ์(function) (0) | 2022.12.15 |
---|---|
*** ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ... (0) | 2022.12.07 |
12 - 2. ํฌ์ธํฐ๋ ์ํฌ์ด๋ค! (ํฌ์ธํฐ) (1) | 2022.12.07 |
12 - 1. ํฌ์ธํฐ๋ ์ํฌ์ด๋ค! (ํฌ์ธํฐ) (1) | 2022.12.07 |
11 - 2. C ์ธ์ด์ ์ํํธ2 (๊ณ ์ฐจ์์ ๋ฐฐ์ด) (0) | 2022.11.25 |