๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ‘จ๐Ÿพ‍๐Ÿ’ป C++

๋ฐฐ์—ด

by eazuooz 2022. 8. 19.

๋ฐฐ์—ด์€ ๊ณ ์œ  ์‹๋ณ„์ž์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ๋ฐฐ์น˜๋œ ๊ณต๊ฐ„์— ์ ‘๊ทผ ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ผ์ผ์ด ๋ณ€์ˆ˜๋ฅผ 5๊ฐœ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐฐ์—ด๋กœ ํ•œ๋ฒˆ์— 5๊ฐœ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๋Œ€์‹  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ 5๊ฐœ์˜ int๊ฐ’์ด ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์ €์žฅ๋˜๊ณ  5๊ฐœ์˜ ๊ฐ’ ๋ชจ๋‘ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค์™€ ๋™์ผํ•œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜ธ์ถœ

 

๋œ ์œ ํ˜•์˜ ์ •์ˆ˜ ๊ฐ’ 5๊ฐœ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค์—ฌ๊ธฐ์„œ ๊ฐ ๋นˆ ํŒจ๋„์€ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค์ด ๊ฒฝ์šฐ ๋‹ค์Œ ์œ ํ˜•์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์š”์†Œ๋Š” 0์—์„œ 4๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ, ์ฒซ ๋ฒˆ์งธ๋Š” 0์ด๊ณ  ๋งˆ์ง€๋ง‰์€ 4์ž…๋‹ˆ๋‹ค. C++์—์„œ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๊ธธ์ด์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ 0(1์ด ์•„๋‹˜)์œผ๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง‘๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. C++์—์„œ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์€ ์œ ํšจํ•œ ์œ ํ˜•(์˜ˆ: , ...)์ด๊ณ  ์œ ํšจํ•œ ์‹๋ณ„์ž์ด๊ณ  ํ•„๋“œ(ํ•ญ์ƒ ๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์Œ )๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ์˜ ์ˆ˜. ๋”ฐ๋ผ์„œ type ์˜ 5๊ฐœ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

type name [elements];

int foo [5];

 

int foo [5];

์ฐธ๊ณ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ƒ์ˆ˜ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ปดํŒŒ์ผ ํƒ€์ž„์— ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•˜๋Š” ์ •์  ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ ๋ฒ”์œ„ ์˜ ์ผ๋ฐ˜ ๋ฐฐ์—ด (์˜ˆ: ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ฐฐ์—ด)์€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด๋‹น ์š”์†Œ ์ค‘ ์–ด๋А ๊ฒƒ๋„ ํŠน์ • ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‚ด์šฉ์€ ๋ฐฐ์—ด์ด ์„ ์–ธ๋œ ์‹œ์ ์—์„œ ๊ฒฐ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” ์„ ์–ธ๋  ๋•Œ ํ•ด๋‹น ์ดˆ๊ธฐ ๊ฐ’์„ ์ค‘๊ด„ํ˜ธ {}๋กœ ๋ฌถ์–ด ๋ช…์‹œ์ ์œผ๋กœ ํŠน์ • ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

int foo [5] = { 16, 2, 77, 40, 12071 };

์ด ๋ช…๋ น๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ด„ํ˜ธ ์‚ฌ์ด์˜ ๊ฐ’ {}์˜ ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ ์ˆ˜๋ณด๋‹ค ํฌ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ ์˜ˆ์—์„œ foo๋Š” 5๊ฐœ์˜ ์š”์†Œ(๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์ˆซ์ž๋กœ ์ง€์ •๋จ)๋กœ ์„ ์–ธ๋˜์—ˆ๊ณ  []์ค‘๊ด„ํ˜ธ {}์—๋Š” ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ์ •ํ™•ํžˆ 5๊ฐœ์˜ ๊ฐ’์ด ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. less๋กœ ์„ ์–ธํ•˜๋ฉด ๋‚˜๋จธ์ง€ ์š”์†Œ๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ 0์œผ๋กœ ์ฑ„์›Œ์ง). ์˜ˆ๋ฅผ ๋“ค์–ด:

int bar [5] = { 10, 20, 30 };

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 ์ดˆ๊ธฐํ™” ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ๊ณ  ์ค‘๊ด„ํ˜ธ๋งŒ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

int baz [5] = { };

int์ด๋ ‡๊ฒŒ ํ•˜๋ฉด๊ฐ๊ฐ 0 ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๋Š” 5๊ฐœ์˜ ๊ฐ’ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์— ๊ฐ’

์ดˆ๊ธฐํ™”๊ฐ€ ์ œ๊ณต๋˜๋ฉด C++์—์„œ๋Š” ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋น„์›Œ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค []. ์ด ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ค‘๊ด„ํ˜ธ ์‚ฌ์ด์— ํฌํ•จ๋œ ๊ฐ’์˜ ์ˆ˜์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค {}.

int foo [] = { 16, 2, 77, 40, 12071 };

 

์ด ์„ ์–ธ ํ›„ ๋ฐฐ์—ด ์€ 5๊ฐœ์˜ ์ดˆ๊ธฐํ™” ๊ฐ’์„ ์ œ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— foo5๊ฐœ์˜ ๊ธธ์ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ C++์˜ ๋ฐœ์ „์œผ๋กœ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ฒ”์šฉ ์ดˆ๊ธฐํ™” ๋„ ์ฑ„ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ์–ธ๊ณผ ์ด๋‹ˆ์…œ๋ผ์ด์ € ์‚ฌ์ด์— ๋” ์ด์ƒ ๋“ฑํ˜ธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๋ช…๋ น๋ฌธ์€ ๋ชจ๋‘ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.int

int foo[] = { 10, 20, 30 };
int foo[] { 10, 20, 30 }; 

์ •์  ๋ฐฐ์—ด๊ณผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(ํ•จ์ˆ˜ ์™ธ๋ถ€)์—์„œ ์ง์ ‘ ์„ ์–ธ๋œ ๋ฐฐ์—ด์€ ํ•ญ์ƒ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ 0).

 

๋ฐฐ์—ด์˜ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ

๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ์˜ ๊ฐ’์€ ๋™์ผํ•œ ์œ ํ˜•์˜ ์ผ๋ฐ˜ ๋ณ€์ˆ˜ ๊ฐ’์ฒ˜๋Ÿผ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 5๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๊ณ  ๊ฐ ์š”์†Œ๊ฐ€ ์œ ํ˜• ์ธ

name[index]
์ด์ „ ์˜ˆ์— ๋”ฐ๋ผ ๊ฐ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ช…๋ น๋ฌธ์€ ์„ธ ๋ฒˆ์งธ์— ๊ฐ’ 75๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ :fooint

foo [2] = 75;

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์€ ์˜ ์„ธ ๋ฒˆ์งธ ์š”์†Œ ๊ฐ’์„ foo์ด๋ผ๋Š” ๋ณ€์ˆ˜ ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค x.

x = foo[2];

๋”ฐ๋ผ์„œ ํ‘œํ˜„์‹ foo[2]์ž์ฒด๊ฐ€ type ์˜ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค int.

์˜ ์„ธ ๋ฒˆ์งธ ์š”์†Œ foo๋Š” ์ง€์ • foo[2]๋˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ด๋ฏ€๋กœ foo[0]๋‘ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ด๊ณ  ์„ธ ๋ฒˆ์งธ ์š”์†Œ foo[1]๋Š” ์ž…๋‹ˆ๋‹ค foo[2]. ๊ฐ™์€ ์ด์œ ๋กœ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” foo[4]์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด foo[5]์˜ ์—ฌ์„ฏ ๋ฒˆ์งธ ์š”์†Œ์— ์•ก์„ธ์Šคํ•˜๊ฒŒ foo๋˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

C++์—์„œ๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์ธ๋ฑ์Šค ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒƒ์ด ๊ตฌ๋ฌธ์ƒ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์š”์†Œ์— ์•ก์„ธ์Šคํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ๋Ÿฐํƒ€์ž„ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ—ˆ์šฉ๋˜๋Š” ์ด์œ ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๋„์ž…๋˜๋Š” ์ดํ›„ ์žฅ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[]์ด ์‹œ์ ์—์„œ ๋Œ€๊ด„ํ˜ธ ๊ฐ€ ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๋‘ ๊ฐ€์ง€ ์šฉ๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค . ๊ทธ๋“ค์€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์„ ์–ธ๋  ๋•Œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” ์•ก์„ธ์Šคํ•  ๋•Œ ๊ตฌ์ฒด์ ์ธ ๋ฐฐ์—ด ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. []์ด ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๋Œ€๊ด„ํ˜ธ ์‚ฌ์šฉ์„ ๋ฐฐ์—ด๊ณผ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค .

 

int foo[5];         // declaration of a new array
foo[2] = 75;        // access to an element of the array.

์ฃผ์š” ์ฐจ์ด์ ์€ ์„ ์–ธ ์•ž์— ์š”์†Œ ์œ ํ˜•์ด ์žˆ์ง€๋งŒ ์•ก์„ธ์Šค๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํšจํ•œ ์ž‘์—…:

 

foo[0] = a;
foo[a] = 75;
b = foo [a+2];
foo[foo[a]] = foo[2] + 5;

์˜ˆ๋ฅผ ๋“ค์–ด:

// arrays example
#include <iostream>
using namespace std;

int foo [] = {16, 2, 77, 40, 12071};
int n, result=0;

int main ()
{
  for ( n=0 ; n<5 ; ++n )
  {
    result += foo[n];
  }
  cout << result;
  return 0;
}
12206

๋‹ค์ฐจ์› ๋ฐฐ์—ด

๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ "๋ฐฐ์—ด์˜ ๋ฐฐ์—ด"๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2์ฐจ์› ๋ฐฐ์—ด์€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ 2์ฐจ์› ํ…Œ์ด๋ธ”๋กœ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์œ ํ˜•์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

jimmytype ์˜ 5๊ฐœ ์š”์†Œ๋‹น 3๊ฐœ์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค int. ์ด์— ๋Œ€ํ•œ C++ ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

int jimmy [3][5];

์˜ˆ๋ฅผ ๋“ค์–ด ํ‘œํ˜„์‹์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์„ธ๋กœ๋กœ, ๋„ค ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋กœ๋กœ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

jimmy[1][3]

(๋ฐฐ์—ด ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ 0์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค)

๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ 2๊ฐœ์˜ ์ธ๋ฑ์Šค(์ฆ‰, 2์ฐจ์›)๋กœ ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋งŒํผ ์ธ๋ฑ์Šค๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜: ๋ฐฐ์—ด์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ๊ฐ ์ฐจ์›์— ๋”ฐ๋ผ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

char century [100][365][24][60][60];

char์„ธ๊ธฐ์˜ ๊ฐ ์ดˆ์— ๋Œ€ํ•œ ์œ ํ˜•์˜ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ 30 ์–ต ์ด์ƒ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค char! ๋”ฐ๋ผ์„œ ์ด ์„ ์–ธ์€ 3GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค!

๊ฒฐ๊ตญ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋ฅผ ๊ณฑํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋ฐฐ์—ด๋กœ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์ถ”์ƒํ™”์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

int jimmy [3][5];   // is equivalent to
int jimmy [15];     // (3 * 5 = 15)  

๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ ๊ฐ€์ƒ ์ฐจ์›์˜ ๊นŠ์ด๋ฅผ ์ž๋™์œผ๋กœ ๊ธฐ์–ตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ์ฝ”๋“œ ์กฐ๊ฐ์€ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ ํ•˜๋‚˜๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‹จ์ˆœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

multidimensional array

#define WIDTH 5
#define HEIGHT 3

int jimmy [HEIGHT][WIDTH];
int n,m;

int main ()
{
  for (n=0; n<HEIGHT; n++)
    for (m=0; m<WIDTH; m++)
    {
      jimmy[n][m]=(n+1)*(m+1);
    }
}

pseudo-multidimensional array

#define WIDTH 5
#define HEIGHT 3

int jimmy [HEIGHT * WIDTH];
int n,m;

int main ()
{
  for (n=0; n<HEIGHT; n++)
    for (m=0; m<WIDTH; m++)
    {
      jimmy[n*WIDTH+m]=(n+1)*(m+1);
    }
}

์œ„์˜ ๋‘ ์ฝ”๋“œ ์กฐ๊ฐ ์ค‘ ์–ด๋А ๊ฒƒ๋„ ํ™”๋ฉด์— ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์ง€๋งŒ ๋‘˜ ๋‹ค ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ jimmy๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค

. ์ฝ”๋“œ๋Š” ์ˆซ์ž ๊ฐ’์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋„ˆ๋น„์™€ ๋†’์ด์— ๋Œ€ํ•ด ์ •์˜๋œ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ํ•œ ๊ณณ์—์„œ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ์„œ์˜ ๋ฐฐ์—ด

์–ด๋–ค ์‹œ์ ์—์„œ ๋ฐฐ์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. C++์—์„œ๋Š” ๋ฐฐ์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ•จ์ˆ˜์— ์ธ์ˆ˜๋กœ ์ง์ ‘ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ๊ฑฐ์˜ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ€์ง€๋ฉฐ ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด์„ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„๋“ค์ด๊ธฐ ์œ„ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด ์œ ํ˜•์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐฐ์—ด์˜ ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๋นˆ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

void procedure (int arg[])

์ด ํ•จ์ˆ˜๋Š” "array of int"๋ผ๋Š” ์œ ํ˜•์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค arg. ์ด ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋œ ๋ฐฐ์—ด:

int myarray [40];

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜ธ์ถœ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

procedure (myarray);
// arrays as parameters
#include <iostream>
using namespace std;

void printarray (int arg[], int length) {
  for (int n=0; n<length; ++n)
    cout << arg[n] << ' ';
  cout << '\n';
}

int main ()
{
  int firstarray[] = {5, 10, 15};
  int secondarray[] = {2, 4, 6, 8, 10};
  printarray (firstarray,3);
  printarray (secondarray,5);
}
5 10 15
2 4 6 8 10

์œ„์˜ ์ฝ”๋“œ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜( )๋Š” ๊ธธ์ด์— ๊ด€๊ณ„์—†์ด int arg[]์š”์†Œ๊ฐ€ ์œ ํ˜•์ธ ๋ชจ๋“  ๋ฐฐ์—ด์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค . int์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ํ•จ์ˆ˜์— ์•Œ๋ ค์ฃผ๋Š” ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•˜๋Š” for ๋ฃจํ”„๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์ „๋‹ฌ๋œ ๋ฐฐ์—ด์—์„œ ๋ฐ˜๋ณตํ•  ๋ฒ”์œ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ์—์„œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 3์ฐจ์› ๋ฐฐ์—ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

base_type[][depth][depth]

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

void procedure (int myarray[][3][4])

์ฒซ ๋ฒˆ์งธ ๋Œ€๊ด„ํ˜ธ []๋Š” ๋น„์–ด ์žˆ๋Š” ๋ฐ˜๋ฉด ๋‹ค์Œ ๋Œ€๊ด„ํ˜ธ๋Š” ํ•ด๋‹น ์น˜์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ ์ถ”๊ฐ€ ์ฐจ์›์˜ ๊นŠ์ด๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฉด์—์„œ ๋ฐฐ์—ด์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด ํ•ญ์ƒ ์ฐจ์›์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์—ญ์‚ฌ์  ์ด์œ ๋กœ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณต์‚ฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์€ ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ดˆ๋ณด ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๋Š” ๋‹ค์Œ ์žฅ์—์„œ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐ์—ด

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฐฐ์—ด์€ C ์–ธ์–ด์—์„œ ์ƒ์†๋œ ์–ธ์–ด ๊ธฐ๋Šฅ์œผ๋กœ ์ง์ ‘ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋ณต์‚ฌ๋ณธ์„ ์ œํ•œํ•˜๊ณ  ํฌ์ธํ„ฐ๋กœ ์‰ฝ๊ฒŒ ๋ถ•๊ดด๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๋„ํ•œ ์ตœ์ ํ™”๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์–ด ๋‚ด์žฅ ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด C++๋Š” ํ‘œ์ค€ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋Œ€์ฒด ๋ฐฐ์—ด ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. header ์— ์ •์˜๋œ ์œ ํ˜• ํ…œํ”Œ๋ฆฟ(์‹ค์ œ๋กœ๋Š” ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ) <array>์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ์ด ์ž์Šต์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ณต์‚ฌ(๋ฉ”๋ชจ๋ฆฌ์˜ ์ „์ฒด ๋ธ”๋ก์„ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹ค์ œ๋กœ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…)๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ (ํšŒ์›์„ ํ†ตํ•ด) ๊ทธ๋ ‡๊ฒŒ ํ•˜๋„๋ก ์ง€์‹œ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค data.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ์ด ์žฅ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์–ธ์–ด ๋‚ด์žฅ ๋ฐฐ์—ด๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ ์˜ˆ์ œ์˜ ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

basic array

#include <iostream>

using namespace std;

int main()
{
  int myarray[3] = {10,20,30};

  for (int i=0; i<3; ++i)
    ++myarray[i];

  for (int elem : myarray)
    cout << elem << '\n';
}

STL array

#include <iostream>
#include <array>
using namespace std;

int main()
{
  array<int,3> myarray {10,20,30};

  for (int i=0; i<myarray.size(); ++i)
    ++myarray[i];

  for (int elem : myarray)
    cout << elem << '\n';
}

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋‘ ์ข…๋ฅ˜์˜ ๋ฐฐ์—ด์€ ๋™์ผํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค myarray[i]. ๊ทธ ์™ธ์— ์ฃผ์š” ์ฐจ์ด์ ์€ ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐ์—ด ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ—ค๋” ํฌํ•จ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐ์—ด ์˜ ํฌ๊ธฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€ ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค .

'๐Ÿ“ Development Study > ๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ป C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ตฌ์กฐ์ฒด  (0) 2022.08.19
๋™์  ๋ฉ”๋ชจ๋ฆฌ  (0) 2022.08.19
ํฌ์ธํ„ฐ  (0) 2022.08.19
๋ฌธ์ž์—ด  (0) 2022.08.19
namespace  (0) 2022.08.18

๋Œ“๊ธ€