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์˜ ์„ฑ๊ฒฉ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์„ฑ์งˆ์„ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Categories:

Updated:

Leave a comment