ν°μ€ν 리 λ·°
λ ν νΌμ μ νκ²½ κ°μ¬λμ Secure & Generic C κ°μλ₯Ό λ£κ³ , μ 리ν λ΄μ©μ λλ€.
ν΄λΉ λ΄μ©μ μ μκΆμ μ νκ²½ κ°μ¬λμκ² μμ΅λλ€.
Constant
CμΈμ΄μμ μμλ `macro`, `const`, `enum`μΌλ‘ λνλΌ μ μλ€. μ΄ μμ μ μ ν μ¬μ©νμ§ μμΌλ©΄ νΈμμ±μ μ»μ§λ§ μ€λ²ν€λλ₯Ό λ°μμν€κ±°λ, μμΉ μλ κ²°κ³Όλ₯Ό λ§λ€μ΄ λΌ μ μλ€.
λ§μ½, `const int size = 3`μ μ¬κ· ν¨μ λ΄μ μ μΈνλ©΄ μ΄λ¨κΉ? ν¨μκ° νΈμΆ λ λλ§λ€ constκ° μ μΈλκ³ ν΄μ λλ―λ‘ μ€λΈν€λκ° λκ² λλ€. λν `switch`μμλ `const`λ₯Ό μ¬μ©ν μ μλ€κ³ λ°°μ΄μμμ κ°μ(index)λ‘λ μ¬μ©ν μ μλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ `enum`μ ν΅ν΄ μμλ₯Ό μ μΈνμ¬μΌ νλ€.
λͺ μμ κ΄κ³ μ μΈ
enum {GO_TO_WORK=9, OUT_TO_WORK=18}
μμ κ°μ΄ μΆν΄κ·Ό μκ°μ μ μΈνλ©΄ μΆκ·Όμ 9μ, ν΄κ·Όμ 18μλΌλ κ²μ μ μ μλ€. νμ§λ§ λ μ¬μ΄μ μκ΄κ΄κ³κ° μλ€λ©΄ λ³΄λ€ μ§κ΄μ μΌλ‘ μ μΈν μ λ μλ€.
enum {GO_TO_WORK=9, OUT_TO_WORK=GO_TO_WORK + 9}
staticμ ν¨μ λ° μ κ·Ό
λ³΄ν΅ ν¨μ λ΄λΆμ static λ³μλ₯Ό μ μΈνλ©΄ ν¨μ λ°μμ μ κ·Όμ λμ§ μλλ€κ³ μ μΈνκ² λλ€. νμ§λ§ μλμ μμλ₯Ό λ³΄κ² λλ€λ©΄, κ°λ₯ν μ μλ€λ λ°λ‘λ₯Ό 보μ¬μ£Όκ² λλ€.
#include <stdio.h>
#include <string.h>
int ary[5] = { 10, 20, 30, 40, 50 };
void sub()
{
static int snum = 3;
snum++;
}
int main()
{
// arrayλ 4κΉμ§ μμ§λ§, μ£Όμλ₯Ό ν΅ν΄ snumμ μ κ·Όνμ¬ μ κ·Όμ λ§μ μ μλ€.
ary[5]++;
// μ μ ν΄μμλ (*(arr + 5))λ μ‘μ§ λͺ»ν¨, arrayκ° 5μΈλ° 5κ° λ€μ΄κ°λ©΄ μ‘μ.
sub();
ary[5]++;
sub();
getchar();
return 0;
}
/*
μμ μ½λλ λ€μκ³Ό κ°μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλκ² λλ€.
| 10 | 20 | 30 | 40 | 50 | 3 |
*/
λ³΄ν΅ `global variable`κ³Ό `static variable`μ κ°μ μμμ ν λΉ λλ κ²½μ°κ° λ§λ€. μ΄λ₯Ό μ΄μ©νκ² λλ€λ©΄, ν¨μ λ°μμλ μ κ·Όμ΄ κ°λ₯νκ² λλ€. μμ μ½λμμ arrayλ 4κΉμ§ μμ§λ§ 5λ₯Ό μ¬μ©νκ² λλ©΄ `snum`μ΄ μλ μ£Όμλ₯Ό μ°Έμ‘°νμ¬ κ°μ μ¦κ° μν¬ μ μλ€.
'πββοΈ νλ‘κ·Έλλ° μΈμ΄ > C' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
C: Generic Coding (0) | 2020.11.18 |
---|---|
C: λ€μν ν¬μΈν° (0) | 2020.11.17 |
C: μ μμ λ²μ (0) | 2020.11.16 |
C: ννμ (0) | 2020.11.14 |
C: 맀ν¬λ‘μ νμ© (0) | 2020.11.14 |