[Cμ–Έμ–΄] ν•¨μˆ˜μ™€ κΈ°μ–΅ 클래슀(2)

2025. 10. 15. 18:37Β·πŸ› οΈBackend/βš™οΈC

βœ… 1. λ§€κ°œλ³€μˆ˜λ₯Ό ν†΅ν•œ 자료 전달

(1) ν•¨μˆ˜μ˜ 호좜과 자료 전달

  • ν•¨μˆ˜ 호좜: μ²˜λ¦¬μ— ν•„μš”ν•œ 자료λ₯Ό ν”Όν˜ΈμΆœ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— 전달함 -> sum(10, 20); 
  • 볡귀: 처리 결괏값을 ν•¨μˆ˜ ν˜ΈμΆœμ‹μ˜ κ°’μœΌλ‘œ λ°˜ν™˜ν•¨ -> return z;

(2) 값에 μ˜ν•œ 자료 전달

  • C μ–Έμ–΄μ˜ 기본적인 자료 전달 방식이닀.
  • C μ–Έμ–΄λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœμ‹œ λ§€κ°œλ³€μˆ˜ 전달은 μ‹€ λ§€κ°œλ³€μˆ˜μ˜ 값을 ν˜•μ‹ λ§€κ°œλ³€μˆ˜μ— λ³΅μ‚¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•¨.
  • μ΄μœ λŠ”, μ‹€ λ§€κ°œλ³€μˆ˜μ™€ ν˜•μ‹ λ§€κ°œλ³€μˆ˜μ˜ 곡간이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— κ°’λ§Œ λ³΅μ‚¬ν•΄μ„œ λ„£μ–΄μ£ΌλŠ” κ²ƒμž„. 즉, μ£Όμ†Œκ°’μ΄ λ‹¬λΌμ„œμž„.
  • 즉, λ³€μˆ˜κ°„μ˜ μ£Όμ†Œκ°’μ΄ λ‹€λ₯Έλ°, μ„œλ‘œ 영ν–₯을 λ°›μ§€ μ•Šλ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œ 볡사λ₯Ό ν•˜λŠ” κ²ƒμž„.

(3) 참쑰에 μ˜ν•œ 자료 전달

#include <stdio.h>

void modify(int *ptr) {
    *ptr = 99;   // ptr이 κ°€λ¦¬ν‚€λŠ” μ£Όμ†Œ(원본 λ³€μˆ˜)에 99 μ €μž₯
}

int main() {
    int num = 5;
    modify(&num);   // num의 μ£Όμ†Œλ₯Ό 전달
    printf("num = %d\n", num);
    return 0;
}
  • C μ–Έμ–΄μ—μ„œλŠ” 직접 μ§€μ›ν•˜μ§€λŠ” μ•Šμ§€λ§Œ, 포인터λ₯Ό μ΄μš©ν•˜μ—¬ μœ μ‚¬ν•œ 처리λ₯Ό ν•  수 있음.
  • μ‹€ λ§€κ°œλ³€μˆ˜μ˜ 값이 λ“€μ–΄ μžˆλŠ” 곳의 μ£Όμ†Œλ₯Ό ν˜•μ‹ λ§€κ°œλ³€μˆ˜μ— μ „λ‹¬ν•˜λŠ” λ°©μ‹μž„.
  • μ£Όμ†Œλ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•΄ ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ₯Ό '포인트' ν˜•μœΌλ‘œ 선언을 ν•΄μ•Ό 됨.
  • ν”Όν˜ΈμΆœ ν•¨μˆ˜μ—μ„œ ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 μ‹€ λ§€κ°œλ³€μˆ˜λ₯Ό 직접 μ‚¬μš©ν•˜λŠ” 것과 λ™μΌν•˜κ²Œ 됨.
  • 즉, 원본 μ£Όμ†Œκ°’을 ν˜•식 λ§€κ°œλ³€μˆ˜λ‘œ μ£ΌκΈ° λ•Œλ¬Έμ— μˆ˜μ •이 μΌμ–΄λ‚˜λ©΄ μ‹€ λ§€κ°œλ³€μˆ˜μ—λ„ μ˜ν–₯이 μžˆμ„ μˆ˜ μžˆμŒ.

  • μ‰½κ²Œλ§ν•΄, κ΅¬μ‘°μ²΄λŠ” μ—¬λŸ¬ 자료λ₯Ό ν¬ν•¨ν•œ ꡬ쑰인데, μš©λŸ‰μ΄ 클 수 있음.
  • κ·Έλž˜μ„œ μš©λŸ‰μ΄ 큰 인수λ₯Ό 전달할 λ•Œ 값이 μ•„λ‹Œ 참쑰에 μ˜ν•œ 자료 전달 즉, μ£Όμ†Œλ₯Ό μ „λ‹¬ν•¨μœΌλ‘œμ¨ νš¨μœ¨μ„ 올릴 수 있음.

βœ… 2. μœ νš¨λ²”μœ„

(1) μœ νš¨λ²”μœ„ ( scope ) λž€?

  • μœ νš¨λ²”μœ„λŠ” λ³€μˆ˜λ‚˜ ν•¨μˆ˜ λ“±μ˜ λͺ…칭을 μ‚¬μš©ν•  수 μžˆλŠ” μ˜μ—­μ„ μ˜λ―Έν•œλ‹€.
  • μœ νš¨λ²”μœ„μ— λŒ€ν•œ 세뢀적인 νŒλ‹¨ 기쀀은 μ§€μ—­λ³€μˆ˜, μ „μ—­λ³€μˆ˜ 둜 λ‚˜λ‰œλ‹€.

[ μ§€μ—­λ³€μˆ˜ (loccal variable) ]

  • νŠΉμ • λ²”μœ„ λ‚΄μ—μ„œλ§Œ ν†΅μš©λ˜λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜λ©°, μ„ μ–Έλœ λΈ”λ‘μ΄λ‚˜ ν•¨μˆ˜ λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•œ λ³€μˆ˜λ₯Ό μ˜λ―Έν•¨.
  • λΈ”λ‘μ΄λ‚˜ ν•¨μˆ˜ 내뢀에 μ„ μ–Έλœ λ³€μˆ˜, ν•¨μˆ˜ 헀더에 μ„ μ–Έλœ ν˜•μ‹ λ§€κ°œλ³€μˆ˜ λ˜ν•œ 포함

[ μ „μ—­λ³€μˆ˜ (global variable) ]

  • ν”„λ‘œκ·Έλž¨ 전체에 걸쳐 μ‚¬μš©λ  수 μžˆλŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.
  • ν•¨μˆ˜ 외뢀에 μ„ μ–Έλœ λ³€μˆ˜λ‘œ λ³Ό 수 있음.
  • 동일 파일 λ‚΄ λ˜λŠ” λ‹€λ₯Έ νŒŒμΌμ— 선언될 수 있음
  • λͺ…μ‹œμ μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ 0으둜 μžλ™ μ΄ˆκΈ°ν™” 됨.

[ μ§€μ—­λ³€μˆ˜μ™€ μ „μ—­λ³€μˆ˜ μ‚¬μš© 팁 ]

  • 가급적이면 μ§€μ—­λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯함.
  • μ΄μœ λŠ” ν•¨μˆ˜μ˜ 독립성 ν–₯상, 디버깅이 μš©μ΄ν•¨, 기얡곡간 μ ˆμ•½, μž¬κ·€ν˜ΈμΆœμ„ ν•˜λŠ” ν•¨μˆ˜μ˜ μž‘μ„± λ“±μ˜ μš©μ΄ν•¨.
  • μ „μ—­λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨ 선두에 μ„ μ–Έν•˜λŠ” 것을 ꢌμž₯함.

βœ… 3. κΈ°μ–΅ 클래슀

(1) κΈ°μ–΅ 클래슀 ( storage class ) λž€?

  • κΈ°μ–΅ ν΄λž˜μŠ€λž€, λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬ 어디에 μ €μž₯λ˜λŠ”μ§€, μ–Έμ œ μƒμ„±λ˜κ³  μ–Έμ œ μ‚¬λΌμ§€λŠ”μ§€(생λͺ…μ£ΌκΈ°), 그리고 μ–΄λ””μ„œ 접근을 ν•  수 μžˆλŠ”μ§€ (λ²”μœ„)λ₯Ό κ²°μ •ν•˜λŠ” 속성을 μ˜λ―Έν•¨.
  • μ‰½κ²Œλ§ν•΄, λ³€μˆ˜μ˜ 쑴속기간(생λͺ…μ£ΌκΈ°), μœ νš¨λ²”μœ„, μ €μž₯μœ„μΉ˜ 등을 κ²°μ •ν•˜λŠ” κ°œλ…μ΄λ‹€.
  • λ˜ν•œ, λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬μ—μ„œ μ–΄λ–»κ²Œ κΈ°μ–΅λ˜λŠ”κ°€λ₯Ό λΆ„λ₯˜ν•˜λŠ” κΈ°μ€€μœΌλ‘œ κΈ°μ–΅ ν΄λž˜μŠ€λΌλŠ” 이름을 가짐.
  • Cμ–Έμ–΄μ—λŠ” λŒ€ν‘œμ μœΌλ‘œ μžλ™λ³€μˆ˜, μ •μ λ³€μˆ˜, μ™ΈλΆ€λ³€μˆ˜, λ ˆμ§€μŠ€ν„° λ³€μˆ˜ 4κ°€μ§€ κΈ°μ–΅ ν΄λž˜μŠ€κ°€ 있음.

  • μžλ™λ³€μˆ˜: 기본적으둜 μ§€μ—­λ³€μˆ˜κ°€ μžλ™λ³€μˆ˜μ— 해당이 되며, μ§€μ—­λ³€μˆ˜μ— λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ 기본값인 auto 둜 취급함.
  • λ ˆμ§€μŠ€ν„° λ³€μˆ˜: CPU의 λ ˆμ§€μŠ€ν„°μ— μ €μž₯ν•˜μ—¬ μ ‘κ·Ό 속도λ₯Ό μ΅œλŒ€ν•œ λΉ λ₯΄κ²Œ ν•˜κ³ μž ν•˜λŠ” μ§€μ—­ λ³€μˆ˜μž„.
  • 정적 λ³€μˆ˜: ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ λ™μ•ˆ 계속 μœ μ§€λ˜λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•¨.
  • μ™ΈλΆ€ λ³€μˆ˜: λ‹€λ₯Έ νŒŒμΌμ΄λ‚˜ λ‹€λ₯Έ λΈ”λ‘μ—μ„œ μ„ μ–Έλœ μ „μ—­λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜μ΄λ‹€.

(2) μžλ™λ³€μˆ˜

#include <stdio.h>
int sum(int, int);
int main() {
    int result = sum(1, 2);
    printf("%d", result);
}
int sum(int a, int b) {
    auto int result = a + b; // auto μƒλž΅μ΄ κ°€λŠ₯함.
    return result;
}
  • μ§€μ—­λ³€μˆ˜μ— 적용될 수 μžˆλŠ” κΈ°μ–΅ ν΄λž˜μŠ€μ΄λ‹€.
  • μ˜ˆμ•½μ–΄ 'auto' λ₯Ό μ§€μ •ν•˜μ—¬ μ„ μ–Έν•΄ μ‚¬μš©μ„ ν•  수 μžˆμ§€λ§Œ, λ””ν΄νŠΈκ°€ auto μ΄λ―€λ‘œ μƒλž΅ν•  수 있음.
  • 쑴속기간(생λͺ…μ£ΌκΈ°): μ†Œμ† ν•¨μˆ˜ λ˜λŠ” 블둝에 μ§„μž…ν•  λ•Œ μƒμ„±λ˜κ³ , λΉ μ Έλ‚˜κ°ˆ λ•Œ μ œκ±°κ°€ 됨.
  • μœ νš¨λ²”μœ„(μ ‘κ·Όλ²”μœ„): μ†Œμ† ν•¨μˆ˜λ‚˜ 블둝 λ‚΄λΆ€
  • λͺ…μ‹œμ μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ λ―Έμ§€μ˜ 값을 κ°–κ²Œ 되며, μ μ ˆν•œ μ΄ˆκΈ°ν™”λ₯Ό ν•  ν•„μš”κ°€ 있음.
  • μ •λ¦¬ν•˜λ©΄, ν•΄λ‹Ή μžλ™ λ³€μˆ˜λŠ” μ§€μ—­λ³€μˆ˜ λ‚΄μ—μ„œ μ„ μ–Έ 된 λͺ¨λ“  λ³€μˆ˜μ— λ””ν΄νŠΈλ‘œ λΆ™κ²Œ λœλ‹€. κ·Έλž˜μ„œ μƒλž΅μ΄ κ°€λŠ₯함.

(3) μ •μ λ³€μˆ˜

  • μ˜ˆμ•½μ–΄ 'static' 을 μ§€μ •ν•˜μ—¬ μ„ μ–Έ ν•  수 있음.
  • 쑴속기간(생λͺ…μ£ΌκΈ°): ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•  λ•Œ μƒμ„±λ˜μ–΄ ν”„λ‘œκ·Έλž¨μ„ 마칠 λ•ŒκΉŒμ§€ μœ μ§€κ°€ 됨.
  • [ μ„ μ–Έ μœ„μΉ˜λ³„ μœ νš¨λ²”μœ„ ]
  • ν•¨μˆ˜λ‚˜ 블둝에 μ„ μ–Έ: μ†Œμ† ν•¨μˆ˜ λ˜λŠ” 블둝 λ‚΄μ—μ„œλ§Œ μ‚¬μš©ν•  수 있음. ( λ‚΄λΆ€μ—μ„œλ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€λŠ” μ˜λ―Έμž„. )
  • ν•¨μˆ˜ 외뢀에 μ„ μ–Έ: μ†Œμ† νŒŒμΌμ—μ„œλ§Œ μ‚¬μš©ν•  수 있음
  • μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μ μœΌλ‘œ 0으둜 μ΄ˆκΈ°ν™”κ°€ 됨.

  • μœ„μ™€ 같이 static ν‚€μ›Œλ“œλ₯Ό 톡해 정적 λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄μ„œ μ‚¬μš©μ„ ν•  수 있음.
  • ν•΄λ‹Ή μ½”λ“œλŠ” test() ν•¨μˆ˜ 내뢀에 auto(μžλ™λ³€μˆ˜) 와 static(μ •μ λ³€μˆ˜) 두 개λ₯Ό μ„ μ–Έν•˜μ—¬ 비ꡐλ₯Ό ν•œ 것이닀.
  • auto λŠ” 생λͺ…μ£ΌκΈ°κ°€ ν•¨μˆ˜κ°€ 끝날 λ•Œ 사라지기 λ•Œλ¬Έμ— 반볡의 κ²°κ³ΌλŠ” λ‹€ 0이 λ‚˜μ˜€κ²Œ λœλ‹€.
  • 반면 static 은 ν•¨μˆ˜ λ‚΄μ—μ„œ 선언이 λ˜μ—ˆκΈ° λ•Œλ¬Έμ—, μ ‘κ·Ό λ²”μœ„λŠ” ν•΄λ‹Ή ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€.
  • ν•˜μ§€λ§Œ, 생λͺ…μ£ΌκΈ°λŠ” ν”„λ‘œκ·Έλž¨μ΄ 끝날 λ•Œ κΉŒμ§€ μœ νš¨ν•˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬μ—μ„œ μ œκ±°κ°€ λ˜μ§€ μ•Šκ³  μœ μ§€κ°€ 되게 λœλ‹€.
  • 즉, κ²°κ³ΌλŠ” auto 0,0,0 static 0,1,2 κ°€ λ‚˜μ˜€κ²Œ λœλ‹€.

(4) μ™ΈλΆ€λ³€μˆ˜

// file1.c
#include <stdio.h>
int count = 10;   // μ „μ—­ λ³€μˆ˜ μ •μ˜ (μ‹€μ œ λ©”λͺ¨λ¦¬ 곡간 생성)
void increase() {
    count++;
}

// file2.c
#include <stdio.h>
extern int count;   // λ‹€λ₯Έ 파일의 countλ₯Ό μ°Έμ‘° (μ„ μ–Έ)
void increase();    // λ‹€λ₯Έ 파일의 ν•¨μˆ˜ μ›ν˜• μ„ μ–Έ
int main() {
    printf("초기 count = %d\n", count); // 10 좜λ ₯
    increase(); // file1.c에 μžˆλŠ” ν•¨μˆ˜ 호좜 → count 증가
    printf("증가 ν›„ count = %d\n", count); // 11 좜λ ₯
    return 0;
}

// μ‹€ν–‰ κ²°κ³Ό
// 초기 count = 10
// 증가 ν›„ count = 11
  • μ˜ˆμ•½μ–΄ 'extern' 을 μ§€μ •ν•˜μ—¬ μ„ μ–Έν•΄μ„œ μ‚¬μš©μ„ ν•  수 있으며, ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œ μ •μ˜λœ λ³€μˆ˜λΌλŠ” 것을 μ˜λ―Έν•¨.
  • μ‰½κ²Œλ§ν•΄, μ „μ—­λ³€μˆ˜μ™€ μ™ΈλΆ€λ³€μˆ˜λŠ” 거의 λ™μΌν•œ 의미λ₯Ό κ°€μ§€κ³  있음.
  • μ „μ—­ λ³€μˆ˜μ—λŠ” extern ν‚€μ›Œλ“œ λ˜ν•œ, auto μ§€μ—­λ³€μˆ˜μ— λ””ν΄νŠΈλ‘œ 넣어진것과 λ™μΌν•˜κ²Œ μžλ™μœΌλ‘œ extern이 λΆ™μŒ.
  • 즉, μ „μ—­ λ³€μˆ˜λŠ” μžλ™μœΌλ‘œ extern이 λΆ™λŠ”λ‹€”λŠ” 말은 κ°œλ…μ μœΌλ‘œλŠ” λ§žμ§€λ§Œ, μ–Έμ–΄μ μœΌλ‘œ extern이 μΆ”κ°€λœλ‹€λŠ” λœ»μ€ μ•„λ‹ˆκ²Œ λœλ‹€.
  • 쑴속기간(생λͺ…μ£ΌκΈ°): staticκ³Ό λ™μΌν•˜κ²Œ, ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•  λ•Œ μƒμ„±λ˜μ–΄ ν”„λ‘œκ·Έλž¨μ„ 마칠 λ•ŒκΉŒμ§€ μœ μ§€λ¨.
  • μœ νš¨λ²”μœ„: ν”„λ‘œκ·Έλž¨ 전체 λ²”μœ„ ( static 은 μ†Œμ† 파일 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯함. )
  • λ‹€λ₯Έ νŒŒμΌμ— μ™ΈλΆ€λ³€μˆ˜λ‘œ μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 있음.
  • μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μ μœΌλ‘œ 0으둜 μ΄ˆκΈ°ν™”κ°€ 됨.

  • μœ„μ™€ 같은 과정을 톡해 컴파일이 μ§„ν–‰ 되고, 링컀가 링킹을 ν•΄μ£Όκ²Œ λœλ‹€. 그러면 file1, file2κ°€ ν•©μ³μ§€κ²Œ 됨.
void increase();    // ν•¨μˆ˜ μ›ν˜• μ„ μ–Έ

 

  • file2 의 ν•¨μˆ˜ μ›ν˜•μ„ μ„ μ–Έ 해놓은 뢀뢄은 "이런 ν•¨μˆ˜κ°€ μ–΄λ”˜κ°€ μžˆμ„ κ±°μ•Ό" 라고 μ•½μ†λ§Œ ν•˜λŠ” μ„ μ—„μž„.
  • 즉, μ»΄νŒŒμΌλŸ¬λŠ” μ‹€μ œ ν•¨μˆ˜ μ •μ˜λ₯Ό λͺ°λΌλ„ 일단 "이런 ν•¨μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€"κ³  λ―Ώκ³  기계어λ₯Ό μƒμ„±ν•˜κ²Œ λœλ‹€.
  • κ·Έλž˜μ„œ μ»΄νŒŒμΌμ€ ν†΅κ³Όν•˜κ²Œ 됨. κ·Έ ν›„, 링컀가 싀행될 λ•Œ file1.o μ•ˆμ—μ„œ μ‹€μ œλ‘œ μ •μ˜λœ increase() λ₯Ό μ°Ύμ•„ μ—°κ²°(link) ν•˜κ²Œ 됨.
  • κ·ΈλŸΌμ—λ„, #include λ₯Ό 톡해 ν—€λ”νŒŒμΌμ„ μ“°λŠ” μ΄μœ λŠ”, 헀더 νŒŒμΌμ— μ„ μ–Έ 된 ν•¨μˆ˜λ“€μ„ μ—¬λŸ¬ 컴파일 λ˜λŠ” νŒŒμΌμ—μ„œ ν—€λ”λ§Œ λ“±λ‘ν•¨μœΌλ‘œμ¨ λͺ¨λ“  컴파일 λ˜λŠ” νŒŒμΌλ“€μ΄ μ„ μ–Έ 없이 이용이 κ°€λŠ₯ν•˜λ―€λ‘œ, μœ μ§€λ³΄μˆ˜ 및 효율이 증가 ν•˜κΈ° λ•Œλ¬Έμž„.
  • #include 헀더 νŒŒμΌμ€ κ²°κ΅­, μ„ μ–Έλ¬Έλ§Œ κ°€μ§€κ³  μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ μ—­ν• μž„. 즉, κ΅¬ν˜„μ²΄λŠ” κ²°κ΅­ 링크 과정을 톡해 연결이 됨.

  • λ˜ν•œ, μœ„μ™€ 같이 extern ν‚€μ›Œλ“œλ₯Ό main() ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš© 즉, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©μ„ ν•  수 있음.
  • μœ„μ˜ extern int i; λŠ” ꡳ이 extern 이 없이도 μ „μ—­λ³€μˆ˜λ‘œ λ§Œλ“€μ–΄μ§„ i λ₯Ό μœ„μ— μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”κ°€ λ˜μ–΄μžˆκΈ°μ— μ‚¬μš©μ΄ κ°€λŠ₯함.
  • ν•˜μ§€λ§Œ, μ•„λž˜μ˜ extern int k; λŠ” extern 이 μ—†λŠ” 경우 였λ₯˜κ°€ 남.

(5) λ ˆμ§€μŠ€ν„° λ³€μˆ˜

  • μ˜ˆμ•½μ–΄ 'register' λ₯Ό μ§€μ •ν•˜μ—¬ μ„ μ–Έ ν•  수 있음.
  • CPU의 λ ˆμ§€μŠ€ν„°μ— 자료λ₯Ό μ €μž₯ν•  것을 μš”μ²­ν•¨
  • 맀우 자주 μ‚¬μš©λ˜λŠ” λ³€μˆ˜μ— μ§€μ •ν•˜μ—¬ μ‹€ν–‰ 속도λ₯Ό λ†’μ΄λ €λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©μ΄ 됨.
  • μ˜ˆμ‹œλ‘œλŠ” 반볡문의 μΉ΄μš΄ν„° λ³€μˆ˜λ‘œ μ‚¬μš© ν•  수 있음.
  • 쑴속기간 및 μœ νš¨λ²”μœ„, μ΄ˆκΈ°κ°’: μžλ™λ³€μˆ˜μ™€ 동일함

'πŸ› οΈBackend > βš™οΈC' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Cμ–Έμ–΄] λ°°μ—΄κ³Ό 포인터(1)  (0) 2025.10.16
[Cμ–Έμ–΄] ν•¨μˆ˜μ™€ κΈ°μ–΅ 클래슀(1)  (0) 2025.10.15
[Cμ–Έμ–΄] 선택 μ œμ–΄λ¬Έκ³Ό 반볡 μ œμ–΄λ¬Έ  (0) 2025.10.13
[Cμ–Έμ–΄] μž…μΆœλ ₯ ν•¨μˆ˜μ™€ μ—°μ‚°μž(2)  (0) 2025.10.03
[Cμ–Έμ–΄] μž…μΆœλ ₯ ν•¨μˆ˜μ™€ μ—°μ‚°μž(1)  (0) 2025.09.05
'πŸ› οΈBackend/βš™οΈC' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Cμ–Έμ–΄] λ°°μ—΄κ³Ό 포인터(1)
  • [Cμ–Έμ–΄] ν•¨μˆ˜μ™€ κΈ°μ–΅ 클래슀(1)
  • [Cμ–Έμ–΄] 선택 μ œμ–΄λ¬Έκ³Ό 반볡 μ œμ–΄λ¬Έ
  • [Cμ–Έμ–΄] μž…μΆœλ ₯ ν•¨μˆ˜μ™€ μ—°μ‚°μž(2)
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (181)
      • πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅ (41)
        • βš™οΈμ»΄ν“¨ν„°μ˜ 이해 (11)
        • πŸ’»μ»΄ν“¨ν„°κ³Όν•™ 개둠 (9)
        • πŸ”’μžλ£Œκ΅¬μ‘° (6)
        • πŸŒμœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ… (11)
        • πŸ›οΈμ„Έκ³„μ˜μ •μΉ˜μ™€κ²½μ œ (3)
        • πŸ–₯️컴퓨터과학과 (1)
      • πŸ› οΈBackend (64)
        • πŸ“šλ°±μ—”λ“œ 곡뢀 (4)
        • β˜•Java (23)
        • 🌳Spring (13)
        • βš™οΈC (8)
        • ⚑Python (13)
        • JavaScript (1)
        • πŸ›’οΈDatabase (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • πŸ“œHTTP (7)
      • πŸš€DevOps (1)
      • β›ΊμŠ€νŒŒλ₯΄νƒ€μ½”λ”©ν΄λŸ½ (64)
      • 정보 (2)
      • 정리가 ν•„μš”ν•œ κΈ€ (2)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    컴퓨터과학 개둠
    μœ λΉ„μΏΌν„°μŠ€
    μ»΄ν“¨ν„°μ˜ 이해
    파이썬
    Python
    spring
    Cμ–Έμ–΄
    λ°°μ—΄
    μœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ…κ°œλ‘ 
    μž…μΆœλ ₯
    Spring Framework
    Java
    λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅
    C
    자료ꡬ쑰
    C μ–Έμ–΄
    λ°©ν†΅λŒ€
    λ°©μ†‘λŒ€
    ν•¨μˆ˜
    μžλ°”
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.1
junbin2
[Cμ–Έμ–΄] ν•¨μˆ˜μ™€ κΈ°μ–΅ 클래슀(2)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”