Array decay
๋ฐฐ์ด์ด ์์์์ ์ฌ์ฉ๋ ๋ ํฌ์ธํฐ๋ก ๋ณํ๋๋ ํ์
Array decay๋ ํ๋ง๋๋ก ๋ฐฐ์ด์ ํฌ์ธํฐ์ ๋น์ทํ๊ฒ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ํ๋์ ์๋ฅผ ๋ค์ด๋ณด์.
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[3] = { 1, 2, 3 };
auto b = a;
cout << "a size: " << sizeof(a) << endl << "b size: " << sizeof(b) << endl;
return 0;
}
์์ ์ฝ๋๋ฅผ ์คํ์ํจ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
sizeof(a) : 12
sizeof(b) : 8
Program ended with exit code: 0
์ฆ, array a์ ๊ฒฝ์ฐ์๋ ํฌ๊ธฐ๊ฐ 12๊ฐ ๋์๊ณ , ํฌ์ธํฐ์ ๊ฒฝ์ฐ์๋ 8์ด๋ผ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ณ ์๋ค. ์ด๋ฅผ ์๊ฐํด๋ณด๋ฉด, ๋ฐฐ์ด a์ ๊ฒฝ์ฐ์๋ (๋ฐฐ์ด์ ํฌ๊ธฐ * ๋ฐฐ์ด์ ์๋ฃํ ํฌ๊ธฐ) ์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ ๊ฒ์ ์ ์ ์๋ค. ํฌ์ธํฐ์ ๊ฒฝ์ฐ์๋ ์ํคํ ์ณ์ ํฌ๊ธฐ ๋ฅผ ์๋ฏธํ๋ค.
[Pointer์ ํฌ๊ธฐ๋ ์ํคํ ์ณ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค ?]
์ฆ, Array decay๋ Array๊ฐ Pointer์ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ฒ ๋๋ ๊ณผ์ ์์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ํ ์ฑ์ง์ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ฉด์ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ด๋ค.
Leave a comment