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

Life/Study

[์ •์ฒ˜๊ธฐ] C์–ธ์–ด...์ดํ•ดํ•˜๋ ค '๋…ธ๋ ฅ' ํ•ด๋ณด๊ธฐ

 

๊ณผ์—ฐ ์‹ค๊ธฐ๋Š” ๋ช‡ ํŠธ์— ๋ถ™์„๊นŒ? ์ƒ๊ฐํ•˜๊ธฐ ์‹ซ๋‹ค..

 

 

โšกํ”„๋ก ํŠธ์—”๋“œ ๊ฐ„๋ณด๊ธฐ ํ•ด๋ณธ ์ฝ”๋”ฉ๋ฐ”๋ณด๋ฅผ ์œ„ํ•œ React๋กœ C์–ธ์–ด ์ดํ•ดํ•œ ๋‚ด์šฉ ์ ์–ด๋ณด๊ธฐ


 

1. #include <stdio.h> == import React from 'react'

๋งจ ์œ—์ค„ ์•”ํ˜ธ๋ฌธ์€ ๊ฑ ๋‚จ์ด ๋งŒ๋“  ๋„๊ตฌ์ƒ์ž ์ž„ํฌํŠธ ํ•ด์˜ค๋Š” ๊ฑฐ๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ›…์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” import ๋ฌธ๋ฒ•๊ณผ ์™„์ „ํžˆ ๊ฐ™์€ ์—ญํ• .

stdio.h๋ผ๋Š” ๊ฑด '์Šคํƒ ๋‹ค๋“œ ์ธํ’‹ ์•„์›ƒํ’‹'์˜ ์•ฝ์ž๋กœ, ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ๋„์šฐ๊ธฐ(printf) ์œ„ํ•ด ๋‚จ์ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ๊ธฐ๋ณธ ๋„๊ตฌ์ƒ์ž๋ฅผ ๋‚ด ํŒŒ์ผ๋กœ ์ž„ํฌํŠธํ•ด์˜ค๋Š” ๊ณผ์ •

 

 

2. int main() { ... } == function App() { ... }

์ตœ์ƒ์œ„ App ์ปดํฌ๋„ŒํŠธ๋ž‘ ๊ฐ™์€ ๊ธฐ๋Šฅ(?)

์ฝ”๋“œ๊ฐ€ ๋ช‡ ์ค„์ด๊ฑด ์ปดํ“จํ„ฐ๋Š” ๋ฌด์กฐ๊ฑด main์œผ๋กœ ์ง์ง„ํ•ด์„œ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ์–ด๋‚ด๋ฆผ. ํ”„๋กœ๊ทธ๋žจ ์ง„์ž…์ ์ฒ˜๋Ÿผ ๋™์ž‘.

 

 

3. ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ (int a = 1;) == ์ƒํƒœ๊ฐ’ ์ดˆ๊ธฐํ™” (useState ๋˜๋Š” let a = 1;)

๋ฉ”์ธ ํ•จ์ˆ˜ ์—ด๋ฆฌ์ž๋งˆ์ž ๋ณ€์ˆ˜๋ถ€ํ„ฐ ๊นŒ๋Š” ๊ฑด ์ปดํฌ๋„ŒํŠธ ์ตœ์ƒ๋‹จ์—์„œ ์ƒํƒœ๊ฐ’ ์„ธํŒ…ํ•˜๋Š” ๊ฑฐ๋ž‘ ๊ฐ™๋‹ค.

์ˆ˜ํ•™ ๋ฌธ์ œ์—์„œ 'x=1, y=2์ผ ๋•Œ...' ํ•˜๊ณ  ์กฐ๊ฑด์‹ ๋˜์ ธ์ฃผ๋Š” ๊ฑฐ์ž„.

 

 

4. ๋ณธ๊ฒฉ์ ์ธ ๋กœ์ง (for, if ๋“ฑ) == ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

์ดˆ๊ธฐ๊ฐ’ ์„ธํŒ… ๋๋‚ฌ์œผ๋ฉด for๋ฌธ, if๋ฌธ ๋Œ๋ ค์„œ ๋ฐ์ดํ„ฐ ์š”๋ฆฌํ•˜๋Š” ๊ตฌ๊ฐ„์ด๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ ๋ Œ๋”๋งํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋งํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’ ๋ฝ‘์•„๋‚ด๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™์Œ. for๋ฌธ์œผ๋กœ ๋…ธ๊ฐ€๋‹ค ๋ฐ˜๋ณต ๋Œ๋ฆฌ๊ณ , if๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ๋”ฐ์ ธ๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•œ๋‹ค. ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ map()์„ ๋Œ๋ฆฌ๊ฑฐ๋‚˜ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์‹ค์งˆ์ ์ธ ์ž‘์—… ๊ณต๊ฐ„์ด๋‹ค.

 

 

5. printf(...) == return ( <div>...</div> )

๋กœ์ง ๋‹ค ๋Œ๋ ค์„œ ๊ฒฐ๊ณผ ๋‚˜์™”์œผ๋ฉด ํ™”๋ฉด์— ๋„์›Œ์•ผ์ฃ ~?

๋ฆฌ์•กํŠธ๊ฐ€ return์œผ๋กœ ๋ทฐ ๋ Œ๋”๋งํ•˜๋“ฏ, C์–ธ์–ด๋Š” printf๋กœ ์ฝ˜์†”์— ์ถœ๋ ฅํ•œ๋‹ค.

 

 

์š”์•ฝ: ์ž„ํฌํŠธ -> App ์—ด๊ธฐ -> ์ƒํƒœ ์„ธํŒ… -> ๋กœ์ง ์ž‘์„ฑ -> ๋ Œ๋”๋ง.

 

  1. ๋„๊ตฌ ์ž„ํฌํŠธํ•˜๊ธฐ (#include)
  2. ๋ฉ”์ธ ์ปดํฌ๋„ŒํŠธ ์—ด๊ธฐ (main())
  3. ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ’ ์„ธํŒ… (int ๋ณ€์ˆ˜ = ์ดˆ๊ธฐ๊ฐ’)
  4. ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ๋กœ์ง ๋Œ๋ฆฌ๊ธฐ (for, if)
  5. ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๊ธฐ (printf)

...์ œ๋ฏธ๋‚˜์ด ํ”ผ์…œ(์‹ ๋ขฐ๋„ ๊ธ‰ํ•˜๋ฝ), "์‹ค๊ธฐ ์‹œํ—˜์— ๋ฌด์กฐ๊ฑด, 1000% ๋‚˜์˜ค๋Š” C์–ธ์–ด ํ•ต์‹ฌ ํŒจํ„ด 3๊ฐ€์ง€" 

 

๐Ÿ”ฅ ํŒจํ„ด 1: ์ง์ˆ˜/ํ™€์ˆ˜ ๊ณจ๋ผ์„œ ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธฐ (๋ฐ˜๋ณต๋ฌธ + ์กฐ๊ฑด๋ฌธ)

์ถœ์ œ ํฌ์ธํŠธ: "๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฆฌ๋ฉด์„œ ํŠน์ • ์กฐ๊ฑด์ผ ๋•Œ๋งŒ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋ˆ„์ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?"

 
#include <stdio.h> // React์˜ 'import React' ์ฒ˜๋Ÿผ, C์–ธ์–ด ๊ธฐ๋ณธ ๊ธฐ๋Šฅ(printf ๋“ฑ)์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฃผ๋ฌธ

int main() {       // App() ์ปดํฌ๋„ŒํŠธ ์‹œ์ž‘! C์–ธ์–ด๋Š” ๋ฌด์กฐ๊ฑด main ์•ˆ์—์„œ ์‹คํ–‰๋ผ.
    
    // 1. ์ดˆ๊ธฐ ์„ธํŒ… (JS์˜ let sum = 0; let i; ์™€ ๊ฐ™์Œ)
    int sum = 0;   // ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๊ณก์ฐจ๊ณก ๋‹ด์„ ๋นˆ ๋ฐ”๊ตฌ๋‹ˆ ์ค€๋น„
    int i;         // ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ์นด์šดํ„ฐ ๋ณ€์ˆ˜

    // 2. ๋ณธ๊ฒฉ์ ์ธ ๋กœ์ง (for๋ฌธ)
    // i๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ, 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ๊นŒ์ง€, 1์”ฉ ์ฆ๊ฐ€(i++)ํ•˜๋ฉด์„œ ๋น™๊ธ€๋น™๊ธ€ ๋ˆ๋‹ค!
    for(i = 1; i <= 10; i++) {
        
        // i๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€(%)๊ฐ€ 0์ด๋ผ๋ฉด? -> ์ฆ‰, "์ง์ˆ˜๋ผ๋ฉด!"
        if(i % 2 == 0) { 
            sum = sum + i; // ๋‚ด ๋ฐ”๊ตฌ๋‹ˆ(sum)์— ๊ทธ ์ง์ˆ˜(i)๋ฅผ ๋”ํ•ด์„œ ๋‹ค์‹œ ๋„ฃ์–ด๋ผ.
        }
    }
    
    // 3. ํ™”๋ฉด์— ์ถœ๋ ฅ (React์˜ return)
    // %d๋Š” "์ด ์ž๋ฆฌ์— ์ •์ˆ˜(์ˆซ์ž)๋ฅผ ๋„ฃ์–ด๋ผ"๋Š” ๋œป์˜ ์ž๋ฆฌ ํ‘œ์‹œ์ž์•ผ. ๊ทธ ๋’ค์— sum์„ ์—ฐ๊ฒฐํ•ด์คŒ.
    printf("%d", sum); 
    
    return 0;      // ํ”„๋กœ๊ทธ๋žจ ๋ฌด์‚ฌํžˆ ๋๋‚ฌ์Œ! (main ์ข…๋ฃŒ)
}

 

๐Ÿ“ ํฌ์ธํŠธ: "%๋Š” ๋‚˜๋จธ์ง€ ๊ตฌํ•˜๋Š” ๊ฑฐ๋‹ˆ๊นŒ 2๋กœ ๋‚˜๋ˆ ์„œ 0์ด๋ฉด ์ง์ˆ˜.
๊ทธ๊ฑธ ๋ฐ”๊ตฌ๋‹ˆ(sum)์— ๊ณ„์† ๋”ํ•œ๋‹ค"

 

 

๐Ÿ”ฅ ํŒจํ„ด 2: ํฌ์ธํ„ฐ ๊ธฐ์ดˆ (์ด๊ฒƒ๋งŒ ์•Œ๋ฉด ํฌ์ธํ„ฐ ์•ˆ ๋ฌด์„œ์›€)

์ถœ์ œ ํฌ์ธํŠธ: "ํฌ์ธํ„ฐ ๊ธฐํ˜ธ *์™€ ์ฃผ์†Œ ๊ธฐํ˜ธ &์˜ ์ฐจ์ด๋ฅผ ์•„๋Š”๊ฐ€?"

#include <stdio.h>

int main() {
    // 1. ์ดˆ๊ธฐ ์„ธํŒ…
    int a = 10;    // a๋ผ๋Š” ์ด๋ฆ„์˜ ์ƒ์ž๋ฅผ ๋งŒ๋“ค๊ณ  10์„ ๋„ฃ์Œ (์ผ๋ฐ˜ ๋ณ€์ˆ˜)
    
    // ํ•ต์‹ฌ!! int *p ๋Š” "๋‚˜๋Š” ์ฃผ์†Œ๋งŒ ๋‹ด๋Š” ํŠน์ˆ˜ ๋ณ€์ˆ˜(ํฌ์ธํ„ฐ)์•ผ!" ๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ๊ฒƒ.
    // &a ๋Š” "a ์ƒ์ž๊ฐ€ ์žˆ๋Š” ์ง‘ ์ฃผ์†Œ"๋ฅผ ๋œปํ•จ. 
    // ์ฆ‰, p๋ผ๋Š” ํฌ์ธํ„ฐ์— a์˜ ์ง‘ ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์คŒ. (p๋Š” ์ด์ œ a๋„ค ์ง‘์ด ์–ด๋”˜์ง€ ์•ˆ๋‹ค!)
    int *p = &a;   
    
    // 2. ๋ณธ๊ฒฉ์ ์ธ ๋กœ์ง
    // ๊ทธ๋ƒฅ p๋Š” '์ง‘ ์ฃผ์†Œ'์ง€๋งŒ, ์•ž์— *์„ ๋ถ™์ธ *p ๋Š” "๊ทธ ์ง‘ ์ฃผ์†Œ๋กœ ์ณ๋“ค์–ด๊ฐ€์„œ ๋‚ด์šฉ๋ฌผ์„ ๊ฑด๋“œ๋ ค๋ผ!"๋Š” ๋œป.
    // ์ฆ‰, a๋„ค ์ง‘์œผ๋กœ ์ณ๋“ค์–ด๊ฐ€์„œ 10์„ 20์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆผ!
    *p = 20;       

    // 3. ์ถœ๋ ฅ
    // ๋ถ„๋ช… ์œ„์—์„œ a = 10 ์ด๋ผ๊ณ  ํ–ˆ์ง€๋งŒ, *p ๊ฐ€ ๋ชฐ๋ž˜ ์ณ๋“ค์–ด๊ฐ€์„œ 20์œผ๋กœ ๋ฐ”๊ฟจ์œผ๋ฏ€๋กœ 20์ด ์ถœ๋ ฅ๋จ!
    printf("%d", a); 
    
    return 0;
}


๐Ÿ“ ๊นœ์ง€ ํฌ์ธํŠธ:
"&๋Š” ์ง‘ ์ฃผ์†Œ! *๋Š” ๊ทธ ์ง‘ ๋ฌธ ๋”ฐ๊ณ  ๋“ค์–ด๊ฐ€์„œ ๋ฌผ๊ฑด ๊บผ๋‚ด๊ธฐ!
*p = 20 ํ•˜๋‹ˆ๊นŒ ์›๋ณธ a๊ฐ€ 20์œผ๋กœ ๋ฐ”๋€Œ๋Š”๊ตฌ๋‚˜!"


๐Ÿ”ฅ ํŒจํ„ด 3: ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ ์ฝค๋ณด (์‹ค๊ธฐ ๋‹จ๊ณจ 1์ˆœ์œ„)

์ถœ์ œ ํฌ์ธํŠธ: "๋ฐฐ์—ด์˜ ์ด๋ฆ„์ด ๊ณง ์ฒซ ๋ฒˆ์งธ ์นธ์˜ ์ฃผ์†Œ๋ผ๋Š” ๊ฑธ ์•„๋Š”๊ฐ€? ์ฃผ์†Œ์— +1์„ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?"

 
#include <stdio.h>

int main() {
    // 1. ์ดˆ๊ธฐ ์„ธํŒ… (JS์˜ const arr = [10, 20, 30]; ๊ณผ ๊ฐ™์Œ)
    int arr[3] = {10, 20, 30}; 
    
    // C์–ธ์–ด์—์„œ "๋ฐฐ์—ด์˜ ์ด๋ฆ„(arr)"์€ ๋ฌด์กฐ๊ฑด "๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์นธ(10)์˜ ์ง‘ ์ฃผ์†Œ"๋ž‘ ๋˜‘๊ฐ™์•„!
    // ๊ทธ๋ž˜์„œ & ๊ธฐํ˜ธ ์—†์ด ๊ทธ๋ƒฅ int *p = arr; ๋ผ๊ณ  ์จ๋„ p๊ฐ€ arr์˜ ์ฒซ ์ฃผ์†Œ๋ฅผ ์•Œ๊ฒŒ ๋จ.
    int *p = arr;  

    // 2. ๋กœ์ง & ์ถœ๋ ฅ (์ด ์ค„์ด ์‹œํ—˜์— 99% ๋‚˜์˜ด)
    // p๋Š” ํ˜„์žฌ ์ฒซ ๋ฒˆ์งธ ์นธ(10)์˜ ์ฃผ์†Œ์•ผ.
    // p + 1 ์€? "์ฃผ์†Œ๋ฅผ ํ•œ ์นธ ์˜†์œผ๋กœ ์ด๋™ํ•ด๋ผ!" -> ์ฆ‰, ๋‘ ๋ฒˆ์งธ ์นธ(20)์˜ ์ฃผ์†Œ๊ฐ€ ๋จ.
    // *(p + 1) ์€? "๊ทธ ๋‘ ๋ฒˆ์งธ ์นธ ์ฃผ์†Œ๋กœ ๋ฌธ ๋”ฐ๊ณ  ๋“ค์–ด๊ฐ€์„œ ๊ฐ’์„ ๊บผ๋‚ด๋ผ!" -> 20์ด ๋‚˜์˜ด.
    // ๊ฒฐ๊ตญ 20 + 5 ๋ฅผ ํ•˜๋ผ๋Š” ๋œป์ด๋‹ˆ๊นŒ 25๊ฐ€ ๋จ!
    printf("%d", *(p + 1) + 5); 
    
    return 0;
}


๐Ÿ“ ๊นœ์ง€ ํฌ์ธํŠธ:
"๋ฐฐ์—ด ์ด๋ฆ„์€ ๊ณง ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ! p + 1 ํ•˜๋ฉด ๋‹ค์Œ ์นธ์œผ๋กœ ์ด๋™!
๊ด„ํ˜ธ ์น˜๊ณ  ์•ž์— * ๋ถ™์–ด์žˆ์œผ๋ฉด ๊ฑฐ๊ธฐ๋กœ ์ณ๋“ค์–ด๊ฐ€์„œ ์ˆซ์ž ๊บผ๋‚ด๊ธฐ!"

๐Ÿ’ก ์š”์•ฝ

  • %d: Decimal(์ •์ˆ˜). ์ˆซ์ž ์ถœ๋ ฅํ•  ๋•Œ ์”€.
  • %s: String(๋ฌธ์ž์—ด). ๋‹จ์–ด ์ถœ๋ ฅํ•  ๋•Œ ์”€.
  • &: ์•ฐํผ์ƒŒ๋“œ๋Š” "์ฃผ์†Œํ‘œ(Address)".
  • *: ๋ณ„ํ‘œ๋Š” "๊ทธ ์ฃผ์†Œ๋กœ ์ณ๋“ค์–ด๊ฐ€๊ธฐ(Value)".
  • p + 1: ๋ฐฐ์—ด์—์„œ ํ•œ ์นธ(์ธ๋ฑ์Šค 1) ์˜†์œผ๋กœ ์ด๋™ํ•˜๊ธฐ. (arr[1]์ด๋ž‘ ์™„๋ฒฝํžˆ ๊ฐ™์€ ๋œป)

 

'Life > Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ •์ฒ˜๊ธฐ/C์–ธ์–ด] C์–ธ์–ด ํฌ์ธํ„ฐ, ์™œ ์“ฐ๋Š” ๊ฑธ๊นŒ?  (0) 2026.08.08
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ] ํ•„๊ธฐ ๊ธฐ์ถœ(2025.08) ์˜ค๋‹ต๋…ธํŠธ  (0) 2026.07.31
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ 1๊ณผ๋ชฉ ์†Œํ”„ํŠธ์›จ์–ด์„ค๊ณ„] EP7. PM๊ฟˆ๋‚˜๋ฌด ์—…๋ฌด์ผ์ง€: ๊ฐœ๋ฐœํŒ€์˜ ๊ณต์šฉ ๊ทธ๋ฆผ ์–ธ์–ด (feat. UMLยท๊ด€๊ณ„ยท๋‹ค์ด์–ด๊ทธ๋žจยท์Šคํ…Œ๋ ˆ์˜คํƒ€์ž…)  (0) 2026.07.23
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ 1๊ณผ๋ชฉ ์†Œํ”„ํŠธ์›จ์–ด์„ค๊ณ„] EP5. PM๊ฟˆ๋‚˜๋ฌด ์—…๋ฌด์ผ์ง€ (feat. ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์˜ ๊ฐœ์š”)  (1) 2026.07.23
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ 1๊ณผ๋ชฉ ์†Œํ”„ํŠธ์›จ์–ด์„ค๊ณ„] EP4. PM๊ฟˆ๋‚˜๋ฌด ์—…๋ฌด์ผ์ง€, ๊ฐœ๋ฐœํŒ€๊ณผ ์ฒซ ๋ฏธํŒ… (feat. ์š”๊ตฌ์‚ฌํ•ญ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค)  (0) 2026.07.23