๐Ÿ’ซ Language

๐Ÿ’ซ Language/Java

[Java] ๋ชจ๋“  ๊ฐ์ฒด๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—ฌ์•ผ ํ• ๊นŒ?

Intro ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ž€ ๊ฐ์ฒด ์ƒ์„ฑ ์ดํ›„, ๋‚ด๋ถ€์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์ด๋‹ค. ๋งŽ์€ ์ฑ…์ด๋‚˜ ๋ธ”๋กœ๊ทธ ๊ธ€์—์„œ ์ด๋Ÿฌํ•œ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—๋Š” ํฐ ์ด์ ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•˜๊ณ  ๋งŽ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋‹ค์Œ์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ๋‚˜์—ดํ•œ ๊ฒƒ์ด๋‹ค. Thread Safe ํ•˜์—ฌ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์œ ์šฉํ•˜๊ณ , ๋™๊ธฐํ™”๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์‹คํŒจ ์›์ž์ ์ธ(Failure Atomic) ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ด์ „์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Cache๋‚˜ Map, Set๋“ฑ์˜ ์š”์†Œ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์ข‹๋‹ค. ๋ถ€์ˆ˜ ํšจ๊ณผ(Side Effect)๋ฅผ ํ”ผํ•ด ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋“ค๋กœ ๊ตฌ์„ฑ๋˜์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ€..

๐Ÿ’ซ Language/Java

[Java] ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ 5์›์น™(SOLID)์ด๋ž€?

SOLID ์›์น™์ด๋ž€? ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์žˆ์–ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” SOLID ์›์น™์€ ์ž๊ธฐ ์ž์‹  ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ์‘์ง‘๋„๋Š” ๋†’์ด๊ณ , ํƒ€ ํด๋ž˜์Šค์™€์˜ ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์ถ”๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋‘”๋‹ค. ์ด๋Š” ํด๋ž˜์Šค์—๊ฒŒ ๋…๋ฆฝ๋œ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋ฉฐ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ”ฒ SRP(Single Responsibility Principle) : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ - ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์ด์œ ๊ฐ€ ๋‹จ ํ•œ ๊ฐ€์ง€์—ฌ์•ผ ํ•œ๋‹ค ๐Ÿ”ฒ OCP(Open Close Principle) : ๊ฐœ๋ฐฉ/ํ์‡„ ์›์น™ - ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ •์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ๐Ÿ”ฒ LSP(Liskov Substitution Principle) : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ - ํ•˜์œ„ ํƒ€์ž…์„ ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค ๐Ÿ”ฒ ISP..

๐Ÿ’ซ Language/Java

[Java] ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜๊ณผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•˜์—ฌ

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์ด๋ž€(First Class Collection) ๐Ÿ”ฒ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ : Collection์„ Wrappingํ•˜๋ฉด์„œ, ๊ทธ ์™ธ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์—†๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์˜ ์žฅ์  ๐Ÿ”ถ ๋น„์ฆˆ๋‹ˆ์Šค์— ์ข…์†์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ ์ผ๋ฐ˜์ ์œผ๋กœ MVC ํŒจํ„ด์—์„œ Model์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด๋‚˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณ ๋„ํ™”๋จ์— ๋”ฐ๋ผ Model์—์„œ Service ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ์—์„œ ํŠน์ˆ˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์•ผ ..

๐Ÿ’ซ Language/Java

[Java] JUnit5 ์‚ฌ์šฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

JUnit์ด๋ž€? ๐Ÿ”ฒ Java ๊ฐœ๋ฐœ์ž์˜ 93%๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๐Ÿ”ฒ ์Šคํ”„๋ง ๋ถ€ํŠธ 2.2๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ๊ธฐ๋ณธ ์ œ๊ณตํ•œ๋‹ค. JUnit5๋Š”? ๐Ÿ”ฒ Platform : ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋Ÿฐ์ฒ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. TestEngine API๋ฅผ ์ œ๊ณต. ๐Ÿ”ฒ Jupiter : JUnit5๋ฅผ ์ง€์›ํ•˜๋Š” TestEngine API ๊ตฌํ˜„์ฒด ๐Ÿ”ฒ Vintage : JUnit4์™€ 3๋ฅผ ์ง€์›ํ•˜๋Š” TestEngine ๊ตฌํ˜„์ฒด JUnit5๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿ”ฒ ์Šคํ”„๋ง๋ถ€ํŠธ 2.2๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ๋Š” ๊ธฐ๋ณธ ํƒ‘์žฌ๋œ๋‹ค. ๐Ÿ”ฒ ๊ทธ ์™ธ์—๋Š” maven, ํ˜น์€ gradle ๋ฐฉ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. gradle test { useJUnitPlatform() } dependencies { testImplementation 'org.junit.jupiter..

๐Ÿ’ซ Language/Java

[Java] ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋™๊ธฐํ™”์— ๋Œ€ํ•ด์„œ

๊ณต์œ ์ž์›๊ณผ ์ž„๊ณ„์˜์—ญ ๐Ÿ”ฒ ๊ณต์œ  ์ž์› : ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ž์› ๐Ÿ”ฒ ์ž„๊ณ„ ์˜์—ญ : ๊ณต์œ ์ž์›๋“ค ์ค‘ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๋งŒํ•œ ๋ถ€๋ถ„ ๐Ÿ”ถ๊ฒฝ์Ÿ ์ƒํƒœ? ๋‘˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ์ž์›์„ ๋ณ‘ํ–‰์ ์œผ๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ธ๋•Œ, ํƒ€์ด๋ฐ์ด๋‚˜ ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ(race ํ˜„์ƒ) ๐Ÿ”ถRead - Modify - Write @RestController @RequestMapping("/race-condition") public class RaceConditionCotroller { public static Integer studentCount = 0; @PostMapping("/1/increase") public ResponseEntity increaseCount() { stud..

๐Ÿ’ซ Language/Java

[Java] ๋™๊ธฐ/๋น„๋™๊ธฐ & ๋ธ”๋Ÿญํ‚น/๋…ผ๋ธ”๋Ÿญํ‚น์ด๋ž€?

๋™๊ธฐ/๋น„๋™๊ธฐ๋ž€? ๐Ÿ”ถ๋™๊ธฐ๋ž€(Synchronize)? ๐Ÿ”ฒ ์š”์ฒญ ์ž‘์—…์— ๋Œ€ํ•œ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ ธ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๐Ÿ”ถ๋น„๋™๊ธฐ๋ž€(Asynchronize)? ๐Ÿ”ฒ ์š”์ฒญ ์ž‘์—…์— ๋Œ€ํ•ด ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ง€์ง€ ์•Š์•„, ์ž์‹ ์˜ ์ž‘์—…์„ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค. ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์˜ ํฐ ์ฐจ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” ์š”์ฒญํ•œ ์ž‘์—…์— ๋Œ€ํ•ด์„œ ์ž‘์—… ์ˆœ์„œ๊ฐ€ ์ง€์ผœ์ง€๋ƒ, ์ง€์ผœ์ง€์ง€ ์•Š๋ƒ์ด๋‹ค. ๋™๊ธฐ๋Š” ์ž‘์—… ์ˆœ์„œ๊ฐ€ ์ง€์ผœ์ง€๊ธฐ ๋•Œ๋ฌธ์— A, B, C๋ผ๋Š” Task์— ๋Œ€ํ•ด ๊ทธ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋ฉฐ ์‹คํ–‰๋˜์ง€๋งŒ, ๋น„๋™๊ธฐ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๋ฌด์ž‘์œ„๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋ธ”๋Ÿญํ‚น/๋…ผ๋ธ”๋Ÿญํ‚น์ด๋ž€? ๐Ÿ”ถ ๋ธ”๋Ÿญํ‚น์ด๋ž€? ๐Ÿ”ฒ ๋‹ค๋ฅธ ์š”์ฒญ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์ž‘์—…์„ Block(์ฐจ๋‹จ)ํ•˜๋Š” ๊ฒƒ ๐Ÿ”ถ ๋…ผ๋ธ”๋Ÿญํ‚น์ด๋ž€? ๐Ÿ”ฒ ๋‹ค๋ฅธ ์š”์ฒญ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์ž‘์—…์„ Block(์ฐจ๋‹จ)ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๐Ÿค”..

๐Ÿ’ซ Language/C

[C/C++] typedef, union, enum ํ•ด์„ํ•˜๊ธฐ

typedef์™€ ๊ตฌ์กฐ์ฒด typedef : ํƒ€์ž… ์ด๋ฆ„์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ•ด์ค€๋‹ค ์–ด๋–ค ๊ฒฝ์šฐ๋“  ์ด๋ฆ„์ด ๊ธธ์–ด์ง€๋ฉด ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ๊ตฌ์กฐ์ฒด ํƒ€์ž…์„ ์•Œ๋ ค์ฃผ๊ณ  ์ด๋ฆ„์„ ์ง€์–ด์ฃผ์–ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Š” ์ˆ์ฝ”๋”ฉ ์ค‘๋…์ž๋“ค์ธ ๊ฐœ๋ฐœ์ž๋“ค ๋ˆˆ์— ์ฉ ์ข‹์ง€ ์•Š์•˜๋‚˜๋ณด๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ์กฐ์ฒด์˜ ์ •์˜์™€ ์‚ฌ์šฉ์„ ์‰ฝ๊ฒŒ ํ•ด๋ณด๋ ค๊ณ  ๋„์ž…ํ•œ ๊ฒƒ์ด typedef์ด๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ค. struct point { int xpos; int ypos; }; typedef struct point Point Point p; ์œ„์ฒ˜๋Ÿผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์งง์•„์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. typedef struct point { int xpos; int ypos; } Point; Point p; ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ..

๐Ÿ’ซ Language/C

[C/C++] malloc๊ณผ Stack๊ณผ Heap์˜ ๊ด€๊ณ„

์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์Šคํƒ ํ”„๋ ˆ์ž„ ๋‚ด์—์„œ ์‚ฌ๋ผ์ง€๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์Šคํƒ๊ณผ ํž™์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ : Stack vs. Heap Stack์€ ๋ฌด์—‡์„ ํฌํ•จํ•˜๋Š” ๊ฐ€? ์ง€์—ญ ๋ณ€์ˆ˜, ์ธ์ž, ๋ฆฌํ„ด ์ฃผ์†Œ Heap์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๋ณ€์ˆ˜์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ (๋™์  ๋ณ€์ˆ˜, ๋ฌด๋ช… ๋ณ€์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.) Heap์— ์žˆ๋Š” ๋™์  ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค. ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜์™€ ์œ ์‚ฌํ•˜๋‹ค. Heap์— ์žˆ๋Š” ๋™์  ๋ณ€์ˆ˜๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๊ณผ ์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅธ ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ œ๊ฑฐํ•˜๊ธฐ ํ•˜๊ธฐ์œ„ํ•œ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ƒ์„ฑ ํ•จ์ˆ˜ malloc(), new() ์ œ๊ฑฐ ํ•จ์ˆ˜ free() Stack ์ง€์—ญ ..

๐Ÿ’ซ Language/C

[C/C++] ํฌ์ธํ„ฐ ๋ฐฐ์—ด ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด ํฌ์ธํ„ฐ

ํฌ์ธํ„ฐ ๋ฐฐ์—ด, ๋ฐฐ์—ด ํฌ์ธํ„ฐ ํ˜ผ์šฉํ•˜์—ฌ ์“ฐ๋‹ค๋ณด๋ฉด ์ด๊ฒŒ ์ •ํ™•ํžˆ ๋ฌด์Šจ ๊ฐœ๋…์ธ์ง€ ์Šค์Šค๋กœ ๊นจ๋‹ซ์ง€ ๋ชปํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ํ•œ๋ฒˆ ์ดํ•ดํ•ด๋ณด์ž. ํฌ์ธํ„ฐ ๋ฐฐ์—ด์ด๋ž€? ํฌ์ธํ„ฐ ๋ฐฐ์—ด์ด๋ž€ ๊ฐ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ํฌ์ธํ„ฐ(์ž๋ฃŒํ˜•์ด ์ฃผ์†Œ)์ธ ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. char * strArr[3] = { "cat", "dog", "bird" }; printf("%s", strArr[0]); printf("%s", strArr[1]); printf("%s", strArr[2]); strArr๋Š” ํฌ์ธํ„ฐ ๋ฐฐ์—ด์ด๋‹ค. ๊ฐ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ํฌ์ธํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌธ์ž์—ด์ด ์™œ ํฌ์ธํ„ฐ์ธ๊ฐ€? ์ด๋Š” ๋ฐฐ์—ด ์•ˆ์— ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํฌ์ธํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํฌ์ธํ„ฐ ๋ฐฐ์—ด๊ณผ ๋”๋ธ” ํฌ์ธํ„ฐ ํฌ์ธํ„ฐ ๋ฐฐ์—ด์˜ ๋˜ ๋‹ค๋ฅธ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์œผ๋กœ ๋”๋ธ” ํฌ์ธํ„ฐ๋ฅผ..

๐Ÿ’ซ Language/C

[C/C++] ์ž๋™ ํ• ๋‹น ๋ฌธ์ž์—ด๊ณผ ํฌ์ธํ„ฐ

C์–ธ์–ด์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์–ด์ƒ‰ํ•œ ๋ฌธ๋ฒ•๊ณผ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ฌธ๋ฒ•๋“ค์ด ํผ์ฆ์ฒ˜๋Ÿผ ๋‹ค๊ฐ€์˜ค๊ณค ํ•œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์–ธ์–ด์ด๊ธฐ๋„ ํ•˜๊ณ , ๋ถ„๋ช… ๋„์›€์ด ๋˜๋Š” ๋ถ€๋ถ„๋„ ๋งŽ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋ฉฐ, ํ—ท๊ฐˆ๋ ธ๋˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ž๋™ ํ• ๋‹น ๋ฌธ์ž์—ด์ด๋ž€? ํฐ ๋”ฐ์˜ดํ‘œ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ๋ฌธ์ž์—ด์ด๋‹ค. ๋‹จ, char ๋ฐฐ์—ด ์„ ์–ธํ•  ๋•Œ ์ดˆ๊ธฐํ™” ๊ฐ’์œผ๋กœ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•œ๋‹ค. char * str = "Oh String"; ์œ„ ๊ตฌ๋ฌธ ๊ฐ™์ด ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•  ๋•Œ ์ž๋™ ํ• ๋‹น ๋ฌธ์ž์—ด์ด ์“ฐ์ธ๋‹ค. ์ด ๋ฌธ์ž์—ด์€ ๋ณ€ํ™”ํ•  ์ˆ˜ ์—†๋‹ค(๋ถˆ๋ณ€). ์™œ ๋ถˆ๋ณ€์ธ๊ฐ€? ์ด๋Š” Const์— ๋Œ€ํ•ด ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํฌ์ธํ„ฐ์— Const ์„ ์–ธ ํฌ์ธํ„ฐ(*)์™€ const๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ์‚ฌ์šฉ ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด๋‹ค. 1. const int * ptr ํ•ด๋‹น ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๊บผ..

TIlearn
'๐Ÿ’ซ Language' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก