๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“˜/Journal

W3 note

by yenios 2021. 2. 14.
    1. preprocessing : clang์ด๋‚˜ make ๋ช…๋ น์–ด ๋ฅผ ํ†ตํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค(ํ—ค๋”ํŒŒ์ผ)์€ ์‹ค์ œ ์ฝ”๋“œ๋กœ ๋Œ€์ฒด๋จ. ํ•ด๋‹น๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์†Œ์Šค ์ฝ”๋“œ์— ๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒƒ.

    2. compiling : ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ (์ค‘๊ฐ„ ์ฝ”๋“œ)๋กœ ๋ฐ”๊พธ๋Š” ๋‹จ๊ณ„.

    3. assembling : ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋จธ์‹  ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ์–ด์คŒ.

    4. linking : 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋จธ์‹  ์ฝ”๋“œ๋“ค์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์นจ.

      Compiling Process

  • CS50 ์ƒŒ๋“œ๋ฐ•์Šค ๋„๊ตฌ๋“ค

    • help50
    • printf
    • debug50
    • check50
    • style 50
  • control + l == ํ„ฐ๋ฏธ๋„์— ๋ช…๋ น์–ด clear

  • ๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ ์‚ฌ์šฉํ•˜๊ธฐ!!!

  • ๋””๋ฒ„๊น… ํ”„๋กœ๊ทธ๋žจ์ด ์—†๋‹ค๋ฉด? ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ ๊ฐ€๋…์„ฑ์žˆ๊ฒŒ ์งœ๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ์ฃผ์„์„ ์ž˜ ๋‹ฌ๊ณ  ๋ณ€์ˆ˜๋ช…์„ ์ง๊ด€์ ์œผ๋กœ ์ง“๋Š”๊ฒŒ ๋„์›€์ด ๋œ๋‹ค

  • char ์“ธ ๋•Œ '', string ์“ธ ๋•Œ "" ๊ถŒ์žฅ

  • ํ˜•๋ณ€ํ™˜ casting

  • const ์„ ์–ธ ์ปจ๋ฒค์…˜ : ์ฝ”๋“œ ์œ„์—, ๋ณ€์ˆ˜ ๋ช…์€ ๋Œ€๋ฌธ์ž๋กœ ์„ ์–ธ

  • ํ•จ์ˆ˜ ํ”„๋กœํ† ํƒ€์ž…!!! ๋ฉ”์ธ ํ•จ์ˆ˜ ์ „์— ์„ ์–ธํ•ด์ฃผ๋Š”๊ฑฐ ์žŠ์ง€ ๋ง์ž

  • int / int = int, float / float = float

  • %1f %2f

  • C๋Š” ๋‹ค๋ฅธ ์–ธ์–ด(Java, Python ๋“ฑ)๊ณผ ๊ฐ™์ด length๋ฅผ ์ž์ฒด์ ์œผ๋กœ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•จ. ์ž„์˜๋กœ ๋ฐฐ์ •ํ•ด์ค˜์•ผ ํ•จ.

  • string์€ ๊ธ€์ž ์ˆ˜์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ฆฌ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ•ด์ง„ ํฌ๊ธฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ.

  • \0 : null(8๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 0์ธ ์ƒํƒœ) ํ˜น์€ null ์ข…๋‹จ๋ฌธ์ž

  • 1๋ฐ”์ดํŠธ๋ฅผ ๋ชจ๋‘ 0์œผ๋กœ ์ฑ„์›Œ ๋‚ญ๋น„(๋์„ ๋‚˜ํƒ€๋ƒ„)

  • ex) ๊ธธ์ด๊ฐ€ 3์ธ ๋ฌธ์ž์—ด HI! ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„  ๋„์ข…๋‹จ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ 4๋ฐ”์ดํŠธ ํ•„์š”.

  • s[0] = H, s[1] = I, s[2] = !, s[3] = \0

  • for๋ฌธ์—์„œ string์ด ๋๋‚ฌ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด๋ฌธ

      1. ๊ธธ์ด(strlen(s)) strlen ํ•จ์ˆ˜์˜ ํ”„๋กœํ† ํƒ€์ž…์€ <string.h> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด์žˆ์Œ.
      1. ๋งˆ์ง€๋ง‰ ๊ฐ’(s[๋งˆ์ง€๋ง‰ ์œ„์น˜] ≠ '\0')
  • ์งˆ๋ฌธ์„ ์ตœ๋Œ€ํ•œ ์ค„์ด๋Š” ๋ฐฉํ–ฅ(์‹œ๊ฐ„ ๋ณต์žก๋„ ์ค„์ด๊ธฐ ์œ„ํ•ด)์œผ๋กœ ๋ณ€์ˆ˜ ์ƒ์„ฑ.

     

     

    ์ด ๊ฒฝ์šฐ์—๋Š” n

  • uppercase

    ๋ฐฉ๋ฒ• 1) ๋ฌธ์ž ๊ฐ’์˜ ์ฐจ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋บ„์…ˆ ์—ฐ์‚ฐ

     

    if ์†Œ๋ฌธ์ž๋ฉด? ์†Œ๋ฌธ์ž ๊ฐ’ - 32(์†Œ๋ฌธ์ž ๊ฐ’๊ณผ ๋Œ€๋ฌธ์ž ๊ฐ’์˜ ์ฐจ์ด)

    ๋ฐฉ๋ฒ• 2) ํ•จ์ˆ˜ ์ด์šฉ

     

  • ๋ช…๋ นํ–‰ ์ธ์ž : ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋’ค์— ์ ์–ด ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ๊ณผ ๊ฐ™์ด ๋„ฃ์–ด์ฃผ๋Š” ์ธ์ž

     

    argc๋Š” argument count๋ผ๋Š” ์˜๋ฏธ๋กœ ์ธ์ž๋“ค์˜ ๊ฐœ์ˆ˜, argv ๋Š” argument vector๋ž€ ์˜๋ฏธ๋กœ ๊ด€์Šต์ ์ธ ํ‘œํ˜„.

  • C์˜ main์€ 0(๋ฌธ์ œ ์—†์Œ)์„ ๋ฐ˜ํ™˜.

  • ๋ฌธ์ œ ์žˆ๋Š” ๊ฒฝ์šฐ return 1;

     

  • ๋‹จ์–ด ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ argc๊ฐ€ 2์ธ ์ด์œ !

    • argv[0] ์€ ์ฒ˜์Œ์— ์ž…๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
    • argv[1] ์€ ๊ทธ ๋‹ค์Œ์— ์ž…๋ คํ•œ ๋‹จ์–ด ์ด๋ฆ„
    • prog.c ๋ผ๋Š” ์†Œ์Šค์ฝ”๋“œ ๋งŒ๋“  ํ›„ ์ปดํŒŒ์ผ์‹œ ./prog hello world๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ argc๋Š” 3์ด๊ณ , argv[0] = prog, argv[1] = hello, argv[2] = world
  • ์ด์ฒ˜๋Ÿผ ๋ช…๋ น์ธ์ž๋ฅผ ์“ฐ๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ํ™•์žฅ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜๊นŒ์ง€ ์ผ์ผ์ด ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ , ์ธํ„ฐํŽ˜์ด์Šค ์ฐจ์›์—์„œ๋„ ํšจ์œจ์ ์ด๋‹ค.

'๐Ÿ“˜ > Journal' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ ์ฝ๊ธฐ  (1) 2021.06.10
๋‚˜์™€ ์–ด์šธ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž ์œ ํ˜• ์ฐพ๊ธฐ  (0) 2021.06.04
W4 note  (0) 2021.02.14
W2 note  (0) 2021.02.14
W1 note  (0) 2021.02.14

๋Œ“๊ธ€