๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Algorithm

[2020-01-27] 01. ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ ์ด์ง - 11 ~ 13

11. 11_Chapter 01. C ์–ธ์–ด - 10. ๋ฌธ์ž

์•„์Šคํ‚ค ์ฝ”๋“œ

- C ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฌธ์ž๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ (Ascii Code)๋ฅผ ๋”ฐ๋ฆ„

- ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” 0~127 ์ค‘์˜ 1๋ฐ”์ดํŠธ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ฃผ์š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ํ•ด์คŒ

- ์บ๋ฆญํ„ฐํ˜• ์ž์ฒด์— ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

- ๋ฌธ์ž ์ž…์ถœ๋ ฅ์—์„œ ํ˜•์‹ ์ง€์ •์ž๋กœ %c๋ฅผ ์”€

 

๋ฌธ์ž ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

- ์ด๋Ÿฌํ•œ ๋ฌธ์ž๋Š” getChar()๋ฅผ ์ด์šฉํ•ด์„œ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋ฐฉ์‹์ด ์žˆ์Œ (getChar๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์Œ)

 

๋ฌธ์ž 

- ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฒ„ํผ์˜ ๊ฐœ๋…์ด ๋งŽ์ด ์‚ฌ์šฉ๋จ

- ๋ฒ„ํผ(Buffer)๋ž€ ์ž„์‹œ์ ์œผ๋กœ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋จ

- C ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•ด ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌ

 

์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ์ž˜ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜

- ์ด๋ ‡๊ฒŒ ๋˜๋ฉด a ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ๋ฅผ ์ณค์„ ๋•Œ ์—”ํ„ฐ(์ค„๋ฐ”๊ฟˆ)์ด c์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ

 

- ๋‚จ์•„์žˆ๋Š” ์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ํ•ญ์ƒ ์ง€์šธ ์ˆ˜ ์žˆ์Œ 

(๊ทผ๋ฐ ๋‚˜๋Š” ์ด ์ฝ”๋“œ๋กœ ๊ฐ•์˜์— ๋‚˜์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ์•ˆ ๋จ. ์™œ ์•ˆ ๋ ๊นŒ..)

 

12. 12_Chapter 01. C ์–ธ์–ด - 11. ๋ฌธ์ž์—ด

๋ฌธ์ž์—ด์˜ ๊ฐœ๋…

- ๋ฌธ์ž์—ด์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฌธ์ž๋“ค์˜ ๋ฐฐ์—ด

- ๋ฌธ์ž์—ด์€ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์ƒ ๋งˆ์ง€๋ง‰์— null ๊ฐ’์„ ํฌํ•จ

- null ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” ์ด์œ ๋Š” ๋ฌธ์ž์—ด์˜ ๋์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•จ 

- printf() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ null์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ถœ๋ ฅ

 

๋ฌธ์ž์—ด๊ณผ ํฌ์ธํ„ฐ

- ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ์ธํ„ฐ์— ํŠน์ •ํ•œ ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ฒŒ ๋จ

- ๋‹ค์Œ ์ฝ”๋“œ๋Š” "Hello World" ๋ฌธ์ž์—ด์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋„ฃ์€ ๋’ค ๊ทธ ์œ„์น˜๋ฅผ ์ฒ˜๋ฆฌ

- ์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด์„ '๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด'์ด๋ผ ํ•จ. ์ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •

- ํฌ์ธํ„ฐ๋กœ ๋ฌธ์ž์—ด์„ ์„ ์–ธํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ธฐ์กด์˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ (a[1] ์ด๋Ÿฐ ์‹์œผ๋กœ)

 

๋ฌธ์ž์—ด ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜ - gets()

- ๋ฌธ์ž์—ด ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰

- scanf() ํ•จ์ˆ˜๋Š” ๊ณต๋ฐฑ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ ๋ฐ›์ง€๋งŒ, gets() ํ•จ์ˆ˜๋Š” ๊ณต๋ฐฑ๊นŒ์ง€ ํฌํ•จํ•˜์—ฌ ํ•œ ์ค„์„ ์ž…๋ ฅ๋ฐ›์Œ

 

๋ฌธ์ž์—ด ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜ - gets_s()

- gets() ํ•จ์ˆ˜๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜๋„ ์ž…๋ ฅ์„ ๋ฐ›์•„๋ฒ„๋ฆผ -> ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ์ƒ ์ทจ์•ฝ์ ์ด ์žˆ์Œ

- C11 ํ‘œ์ค€๋ถ€ํ„ฐ๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ์ฒ ์ €ํžˆ ์ง€ํ‚ค๋Š” gets_s() ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Œ

- gets_s๋Š” ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜

- C์–ธ์–ด์˜ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Œ

- ๋‚˜์ค‘์— C++์„ ์ด์šฉํ•˜๋ฉด ๋”์šฑ ๊ฐ„ํŽธํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

- C์–ธ์–ด์—์„œ์˜ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋Š” <string.h> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์Œ

- strlen() : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜

- strcmp() : ๋ฌธ์ž์—ด1์ด ๋ฌธ์ž์—ด2๋ณด๋‹ค ์‚ฌ์ „์ ์œผ๋กœ ์•ž์— ์žˆ์œผ๋ฉด -1, ๋’ค์— ์žˆ์œผ๋ฉด +1 ๋ฐ˜ํ™˜

- strcpy() : ๋ฌธ์ž์—ด ๋ณต์‚ฌ

- strcat() : ๋ฌธ์ž์—ด1์— ๋ฌธ์ž์—ด2๋ฅผ ๋”ํ•จ

- strstr() : ๋ฌธ์ž์—ด1์— ๋ฌธ์ž์—ด2๊ฐ€ ์–ด๋–ป๊ฒŒ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ (์งง์€ ๋ฌธ์ž์—ด์„ ์ฐพ์€ ์ฃผ์†Œ๊ฐ’ ์ž˜์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋ฏ€๋กœ ๋‹จ์ˆœํžˆ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋ฉด, ์ฐพ์€ ์ดํ›„ ๋ชจ๋“  ๋ฌธ์ž์—ด ์ถœ๋ ฅ๋จ)

 

13. 13_Chapter 01. C ์–ธ์–ด - 12. ์ปดํ“จํ„ฐ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

- ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ(load) ๋˜์–ด์•ผ ํ•จ

- ๋‹น์—ฐํžˆ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ฅผ ์ถฉ๋‹นํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ํ•จ

- ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ์˜ ์šด์˜์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋„ค ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ด€๋ฆฌ

โ–ถ ์ฝ”๋“œ ์˜์—ญ : ์†Œ์Šค์ฝ”๋“œ

โ–ถ ๋ฐ์ดํ„ฐ ์˜์—ญ : ์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜

โ–ถ ํž™ ์˜์—ญ : ๋™์  ํ• ๋‹น ๋ณ€์ˆ˜

โ–ถ ์Šคํƒ ์˜์—ญ : ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜

 

์ „์—ญ๋ณ€์ˆ˜

- ์ „์—ญ๋ณ€์ˆ˜(Global Variable)๋ž€ ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋””์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜

- main ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ๋„ ์ „์— ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋จ (main ํ•จ์ˆ˜ ๋ฐ”๊นฅ์— ์ •์˜๋จ)

- ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ

- ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ ์žฌ๋จ

 

์ง€์—ญ๋ณ€์ˆ˜

- ์ง€์—ญ๋ณ€์ˆ˜(Local Variable)๋ž€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŠน์ •ํ•œ ๋ธ”๋ก์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜

- ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋–„๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋จ

- ๋ฉ”๋ชจ๋ฆฌ์˜ ์Šคํƒ ์˜์—ญ์— ๊ธฐ๋ก๋จ

์ •์ ๋ณ€์ˆ˜

- ์ •์ ๋ณ€์ˆ˜(Static Variables)๋ž€ ํŠน์ •ํ•œ ๋ธ”๋ก์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜

- ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋–„ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋จ

- ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ ์žฌ๋จ

 

๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜

- ๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜ (Register Variable)๋ž€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์‹  CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜ -> ์†๋„๋ฉด์—์„œ ์šฐ์ˆ˜ํ•จ

- ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋งค์šฐ ํ•œ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ์ฒ˜๋ฆฌ๋ ์ง€๋Š” (์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š”๊ฑฐ๋ผ) ์žฅ๋‹ดํ•  ์ˆ˜ ์—†์Œ

 

ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ

- ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•จ์ˆ˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ

- ์ „๋‹ฌ๋ฐฉ์‹์€ 1) ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹๊ณผ 2) ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์ด ์žˆ์Œ

โ–ถ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ : ๋‹จ์ง€ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋จ

โ–ถ ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ : ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ์›๋ž˜์˜ ๋ณ€์ˆ˜ ์ž์ฒด์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ

์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ