[C] C ์–ธ์–ด์˜ ๊ฐœ์š”

2025. 8. 18. 02:09ยท๐Ÿ› ๏ธBackend/โš™๏ธC

โœ… 1. C ์–ธ์–ด์˜ ๋“ฑ์žฅ๊ณผ ๋ฐœ์ „

(1) ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

[ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€? ]

  • ์ปดํ“จํ„ฐ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ๋ช…๋ น์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ

[ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ]

  • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด

(2) C ์–ธ์–ด์˜ ํƒ„์ƒ

  • 1972๋…„ Bell ์—ฐ๊ตฌ์†Œ์˜ Denis Ritchie๊ฐ€ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.
  • ์ปดํ“จํ„ฐ ๊ธฐ์ข…๊ฐ„ ํ˜ธํ™˜์„ฑ์ด ๋†’์€ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์˜ ์ œ์–ด์™€ ๋น ๋ฅธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด
  • PDP-7 ์ปดํ“จํ„ฐ์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๊ตฌํ˜„ํ•œ Unix ์ปค๋„์„ C์–ธ์–ด๋กœ ์žฌ์ž‘์„ฑ ์ฆ‰, C๋กœ ๋ฐ”๊ฟ”์„œ ์‰ฝ๊ฒŒ ๋ณด์ด๊ฒŒํ•จ.
  • ๋‹ค์–‘ํ•œ ์ปดํ“จํ„ฐ์— Unix ์šด์˜์ฒด์ œ๋ฅผ ์ด์‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ ( ํ˜„๋Œ€์˜ ์šด์˜์ฒด์ œ๋“ค์€ ๋Œ€๋ถ€๋ถ„ Unix ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Œ. )

(3) C ์–ธ์–ด์˜ ํŠน์ง•

[ ๋ฒ”์šฉ ๊ณ ๊ธ‰์–ธ์–ด ]

  • ๋…ผ๋ฆฌ์ ์ธ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐ ํ๋ฆ„์ œ์–ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ.
  • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ์šฉํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•จ
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ด์‹์„ฑ์ด ๋†’์Œ

[ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ์žกํ•œ ์–ธ์–ด ]

  • ์šด์˜์ฒด์ œ, ์žฅ์น˜๊ด€๋ฆฌ์ž, ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋“ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ด ์ฒ˜๋Ÿผ ์ €๊ธ‰์–ธ์–ด ์ˆ˜์ค€์˜ ํŠน์„ฑ์ด ์žˆ์œผ๋ฉฐ, ํ•˜๋“œ์›จ์–ด ์ œ์–ด์— ์ ํ•ฉํ•˜๋ฉฐ, ๋งค์šฐ ๋น ๋ฅธ ์‹คํ–‰ ์†๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

[ ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ• ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Œ ]

  • ๋ฌธ๋ฒ• ๊ตฌ์กฐ๊ฐ€ ๊ณ ๊ธ‰์–ธ์–ด ์ˆ˜์ค€์œผ๋กœ ๋˜์–ด์žˆ์–ด, ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€

โœ… 2. C ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์„ฑ

(1) ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋‹จ๊ณ„

(2) C ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •

[ 1. ์ฝ”๋”ฉ ]

  • C ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์— ๋งž๊ฒŒ ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, ์ด ๊ณผ์ •์„ ํ†ตํ•ด C ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ( .c ํ™•์žฅ์ž )

[ 2. ์ปดํŒŒ์ผ ]

  • ๋ชฉ์ ํŒŒ์ผ(.obj) ๋ณ€ํ™˜ ๊ณผ์ •์ด๋ฉฐ, ์ด ๊ณผ์ •์„ ์ปดํŒŒ์ผ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ชฉ์ ํŒŒ์ผ: ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ( .obj ํ™•์žฅ์ž )

[ 3. ๋งํฌ ]

  • ๋ชฉ์ ํŒŒ์ผ๋“ค์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์‹คํ–‰ํ๋ฆ„์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ๋งํฌ ๊ณผ์ •์ž„.
  • ์ปดํŒŒ์ผ ๋œ ๋ชฉ์ ํŒŒ์ผ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ๋ฌถ์–ด์„œ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์˜ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์คŒ ( .exe ํ™•์žฅ์ž )

[ ์ •๋ฆฌ ]

  • ๋ณดํ†ต์€ ์ด ๊ณผ์ •๋“ค์€ IDE ๋ฅผ ํ†ตํ•ด ํ•œ ๋ฒˆ์— ์ด๋ค„์ง. ํ•˜์ง€๋งŒ, ๊ฐ๊ฐ์˜ ๋™์ž‘์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์Œ.
  • ์ปดํŒŒ์ผ๊ณผ ๋งํฌ ๊ณผ์ •์€ ํ•ฉ์ณ์„œ ๋นŒ๋“œ๊ณผ์ •์ด๋ผ๊ณ  ๋ถ€๋ฆ„
  • C ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰์—๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ, ์ปดํŒŒ์ผ๋Ÿฌ, ๋ง์ปค, ๋””๋ฒ„๊น… ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•จ. ( ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ - IDE ๋ผ๊ณ  ๋ถ€๋ฆ„ )

โœ… 3. C ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์„ฑ

(1) C ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

[ C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์‹œ์˜ ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™ ]

  • ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.
  • main() ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•จ์ˆ˜์˜ ๋ชธ์ฒด๋Š” ์‹œ์ž‘๊ณผ ๋์„ ์•Œ๋ฆฌ๋Š” ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ๋ธ”๋ก ์•ˆ์—๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ, ์น˜ํ™˜, ์—ฐ์‚ฐ, ํ•จ์ˆ˜ํ˜ธ์ถœ ๋“ฑ์˜ ๋ช…๋ น์„ ๊ธฐ์ž…ํ•œ๋‹ค.
  • ์„ ํ–‰์ฒ˜๋ฆฌ ์ง€์‹œ์–ด(perprocessiong directives)๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์žฅ์˜ ๋์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ๋ถ™์ธ๋‹ค.
  • ์„ ํ–‰์ฒ˜๋ฆฌ ์ง€์‹œ์–ด: C ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ ์ „์ฒ˜๋ฆฌ๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์˜๋ฏธํ•จ.

(2) C ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์„ฑ ์š”์†Œ

[ C ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ํ† ํฐ์˜ ์ข…๋ฅ˜ ]

  • ์˜ˆ์•ฝ์–ด(ํ‚ค์›Œ๋“œ): C์—์„œ ๊ณ ์œ ํ•œ ๋ฌธ๋ฒ• ๋ฐ ์˜๋ฏธ๊ฐ€ ์ •ํ•ด์ง„ ๋‹จ์–ด ( char, int, auth, volatile, for, if ๋“ฑ )
  • ๋ช…์นญ: ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ •์˜ํ•˜๋Š” ์ด๋ฆ„ ( ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช… ๋“ฑ )
  • ์ƒ์ˆ˜: ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ (์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž ๋“ฑ)
  • ๋ฌธ์ž์—ด: ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ๋ฌธ์ž ์‹œํ€€์Šค
  • ๊ตฌ๋‘์ : ๊ณ ์œ ํ•œ ๋ฌธ๋ฒ• ๋ฐ ์˜๋ฏธ๊ฐ€ ์ •ํ•ด์ง„ ๊ธฐํ˜ธ
  • ์„ค๋ช…๋ฌธ: ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์ฃผ์„ ex - /* */ , // ( ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์„ค๋ช…๋ฌธ์˜ ์˜์—ญ์€ ๋ฌด์‹œํ•จ )

โœ… 4. ์—๋Ÿฌ์™€ ๊ฒฝ๊ณ 

(1) ์—๋Ÿฌ

  • ํ”„๋กœ๊ทธ๋žจ์„ ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ํฌํ•จ๋œ ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•จ
  • C์–ธ์–ด์˜ ๋ฌธ๋ฒ•์— ๋งž์ง€ ์•Š๋Š” ํ˜•์‹์˜ ๋ฌธ์žฅ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ
  • ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์š”์†Œ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ
  • ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ๋นŒ๋“œ๊ฐ€ ์ค‘์ง€๋˜์–ด ๋ชฉ์  ์ฝ”๋“œ ๋ฐ ์‹คํ–‰ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ
  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•จ

(2) ๊ฒฝ๊ณ 

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

'๐Ÿ› ๏ธBackend > โš™๏ธC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C] ์ž๋ฃŒํ˜•๊ณผ ์„ ํ–‰์ฒ˜๋ฆฌ๊ธฐ  (1) 2025.08.29
'๐Ÿ› ๏ธBackend/โš™๏ธC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C] ์ž๋ฃŒํ˜•๊ณผ ์„ ํ–‰์ฒ˜๋ฆฌ๊ธฐ
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (169)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (35)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ’ป์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก  (5)
        • ๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ (4)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
      • ๐Ÿ› ๏ธBackend (58)
        • ๐Ÿ“š๋ฐฑ์—”๋“œ ๊ณต๋ถ€ (4)
        • โ˜•Java (23)
        • ๐ŸŒณSpring (13)
        • โš™๏ธC (2)
        • โšกPython (13)
        • JavaScript (1)
        • ๐Ÿ›ข๏ธDatabase (0)
        • Algorithm Problem Solving (2)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (64)
      • ์ •๋ณด (2)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐฐ์—ด
    Spring Framework
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ํด๋ผ์šฐ๋“œ
    ์ปดํŒŒ์ผ๋Ÿฌ
    ์ž๋ฐ”
    spring
    ์Šคํ”„๋ง
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    Java
    ์šด์˜์ฒด์ œ
    ์ž…์ถœ๋ ฅ
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์ž๋ฃŒ๊ตฌ์กฐ
    Python
    ๋ฐฉ์†ก๋Œ€
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ๋ฐฉํ†ต๋Œ€
    ํŒŒ์ด์ฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[C] C ์–ธ์–ด์˜ ๊ฐœ์š”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”