함수와 기억 클래스 - 2

함수의 호출방법, 호출 함수와 피 호출함수사이의 자료전달방법, 변수의 유효범위아 기억클래스의 개념.

  • 학습 목표

    1. 값에 의한 자료 전달 방법과 참조에 의한 자료전달방법의 차이 이해.
    2. 지역 변수와 전역변수의 이해.
    3. 기억클래스의 의해.

주요 용어

  • 기억 클래스 : 변수를 기억공간의 특정 영역에 할당하는 방법.
  • 지역 변수 : 특정 범위 내에서만 사용되는 변수.
  • 전역 변수 : 프로그램 전체에 걸쳐 사용될 수 있는 변수.
  • 자동 변수 : 함수 실행 시 만들어 지고 실행이 끝나면 기억공간이 제거되는 유형.
  • 정적 변수 : 프로그램이 끝날 때까지 기억영역이 유지되는 유형.
  • 외부 변수 : 함수외부에서 선언되어 프로그램이 끝날 때가지 기억영역이 유지되는 유형.
  • 레지스터 변수 : CPU내의 레지스터에 자료를 저장하고자 할 때 사용되는 유형.

매개변수 사이의 자료 전달

Call By Value - 값에 의한 자료 전달

  • 기본적인 자료전달 방법.

  • 실 매개변수와 형식 매개변수 사이에 값의 전달.

  • 호출한 함수의 실행이 끝난 다음 전달받은 값을 되돌려 받지 못함.

  • 구조

    •   func1(10, 20); // 함수호출(실 매개변수)
        ...
        int func(int x, int y) // 함수 정의 (형식 매개변수)
  • EX

    •   #include <stdio.h>
      
        void swap(int x, int y);
      
        int main()
        {
          int a = 3, b = 5;
      
          printf(":: Before Call a = %d, b = %d\n", a, b); //  ::  a = 3, b = 5
      
          swap(a, b);
      
          printf(":: After Call a = %d, b = %d\n", a, b);  //  :: a = 3, b = 5
          return 0;
        }
      
        void swap(int x, int y)
        {
          x ^= y;
          y ^= x;
          x ^= y;
          printf(">> Inside swap x = %d, y = %d\n", x, y); //  >> x = 5, y = 3
        }
  • 값에 의한 자료 전달 과정


Call By Reference - 참조에 의한 자료 전달

  • 호출함수와 피 호출함수의 매개변수 값을 서로 교환할 수 있는 자료전달 방법.

  • 값을 전달하는 것이 아니라 실 매개 변수의 값이 들어있는 주소 값이 전달됨.

  • 구조

    •   func1(&a, &b); // 함수호출 (실 매개변수)
        ...
        int func1( int * x, int * y) // 함수 정의 (형식 매개변수)

& : 주소 연산자.

호출 하는 곳에서는 &를 붙여서 주소를 전달하는 것을 명시적으로 표현.

* : 내용 연산자. (*가 붙은 변수를 포인터 변수라고 한다.)

호출 당하는 곳에서는 *를 붙여서 주소가 가르티는 내용을 사용함을 명시적으로 표현한다.

  • EX

    • 참조에 의한 자료 전달방법은 피호출 함수 내에서 값의 변화가 일어나면 실 매개변수의 값도 변화됨.

    •   #include <stdio.h>
      
        void swap(int *x, int *y);
      
        int main()
        {
          int a = 3, b = 5;
      
          printf(":: Before Call a = %d, b = %d\n", a, b); //  :: a = 3, b = 5
      
          swap(&a, &b);
      
          printf(":: After Call a = %d, b = %d\n", a, b); //  :: a = 5, b = 3
          return 0;
        }
      
        void swap(int *x, int *y)
        {
          *x ^= *y;
          *y ^= *x;
          *x ^= *y;
          printf(">> 4. Inside swap x = %d, y = %d\n", *x, *y); //  >> a = 5, b = 3
        }
  • 참조에 의한 자료 전달 과정


기억 클래스 (Storage class)

  • 변수를 기억공간의 특정영역에 할당하는 방법.
  • 즉, 각 변수의 유효범위와 존속기간을 설정.
    • 변수의 사용 위치에 따라.
      • 지역 변수.
      • 전역 변수.
    • 변수의 존속기간에 따라
      • 자동 변수.
      • 정적 변수.
      • 외부 변수.
      • 레지스터 변수.

지역변수와 전역변수

지역 변수 (local variable)

  • 특정 범위 내에서만 통용되는 변수.

  • 선언된 블록이나 함수 내에서만 사용 가능.

  • 함수에서 사용되는 매개변수에도 해당.

  • 지역변수 사용 예

    •   #include <stdio.h>
      
        void func();
      
        int main()
        {
          //  main()) 내부에 선언되어 main()에서만 사용가능한 지역변수
          int i = 10;
      
          printf("\n main i : %d", i);
      
          func();
      
          printf("\n main i : %d\n", i);
      
          return 0;
        }
      
        void func()
        {
          //  main()의 i와는 별개인 지역변수.
          int i;
      
          i = 20;
          printf("\n func i : %d", i);
        }
    •   #include <stdio.h>
      
        int main()
        {
          // BLOCK A
          int x = 2, y = 4;
      
          printf("A >> x : %d, y : %d\n", x, y);
      
          {
            //  BLOCK B
            int x;
            x = 5;
            y++;
            printf("B >> x : %d, y :%d\n", x, y);
          }
          printf("A >> x : %d, y :%d\n", x, y);
        }

전역 변수 (global variable)

  • 함수 밖이나 외부 파일에서 선언되어 프로그램 전체에 걸쳐 사용될 수 있는 변수
  int x, y; //  변수 x, y는 **프로그램 전체에서 사용가능한 전역변수**(함수 외부에서 선언됨)

  long func1 (int m, int n) {
    x++, y--;
    m++, n--;
    //  변수 m, n은 func1 내에서만 사용 가능한 **지역변수**.
  }

  void func2 () {
    int m, n;
    //  func2()의 **지역변수**.
  }

  void main(){
    int m, n;
    // main()에서만 사용 가능한 **지역변수**.
    long x;

    x = func1( 10, 20 );
    func2()
  }
  • EX

    •   #include <stdio.h>
      
        void func();
        int x;
        //  **전역변수**, 가급적 프로그램의 선두에 위치하는 것이 좋음.
        //  전역변수는 초기화 안 하면 **0으로 자동 초기화**.
      
        int main()
        {
      
          printf(" 1 ) x : %d\n", x);
      
          func();
      
          printf(" 2 ) x : %d\n", x);
      
          return 0;
        }
      
        void func()
        {
          //  전역 변수이기 때문에 어디서나 사용 가능.
          x++;
        }

전역 변수와 지역변수의 비교

  • 동일 범위 내에서는 지역변수가 우선.
  • 전역변수의 선언은 프로그램 선두에 위치.
  • 가급적 지역변수를 사용하는 것이 효율적.
    • 함수의 독립성 향상.
    • 디버깅 효율 향상.
    • 기억공간 절약.

변수의 기억 클래스 종류

  • 변수의 초기화, 존속기간, 유효범위에 따라 구별.
    • 자동 (auto)
    • 정적 (static)
    • 외부 (extern)
    • 레지스터 (register)

기억 클래스를 이용한 변수 선언

  • 형식 : 기억클래스 자료형 변수명;
  • 기능 :
    • 기존의 변수 선언문에 기억클래스만 기입.
    • 선언된 변수에 저장도니 자료는 해당 기억영역에 놓이게 됨.
  • 사용 예
    • auto int a;
    • static int b;
    • extern int c;
    • register int c;

자동변수

  • 함수 실행시 만들어지고, 실행이 끝나면 기억공간이 제거됨.
  • 예약어 auto를 사용 (생략 가능)
  • 통용 범위는 변수가 선언된 블록이나 함수 내로 한정.
  • 지역변수에 해당.
  • 초기화 필요.
  #include <stdio.h>

  int main()
  {
    int i = 1;
    auto int j = 2;
    { //  BLOCK A
      int i = 3;
      { //  BLOCK B
        int i = 4;

        printf("i in BLOCK B : %d\n", i);
        printf("j in BLOCK B : %d\n", j);
      }
      printf("i in BLOCK A : %d\n", i);
    }
    printf("i in BLOCK MAIN() : %d\n", i);

    return 0;
  }

정적변수

  • 기억 영역이 프로그램 끝날 때까지 유지.
  • 예약어 static 사용.
  • 전역 변수에 해당.
  • 변수의 값은 프로그램 실행 중 계속 유지.
  • 초기화가 없으면 0 으로 초기화 됨.
  #include <stdio.h>

  int main()
  {
    //  자동 변수 선언
    int a = 10;
    //  정적 변수 선언
    static int b = 20;

    {
      int a = 5;
      printf("a : %d b : %d\n", a, b);
      // a는 자동 변수이므로 블럭 안에서만 효력이 발생함.
    }
    printf("a : %d b : %d\n", a, b);

    return 0;
  }
  #include <stdio.h>

  void test();

  int main()
  {
    int i = 0;

    while (i < 3)
    {
      test();
      i++;
    }

    return 0;
  }

  void test()
  {
    auto int a = 0;
    static int s = 0;

    printf("auto : %d, statc : %d\n", a, s);

    ++a, ++s;
  }
  /**
   * auto : 0, statc : 0
   * auto : 0, statc : 1
   * auto : 0, statc : 2
   * 자동변수는 호출 될 때 마다 값이 초기화 되지만,
   * 함수 내에서 사용된
   * **정적 변수는 함수를 빠져 나가더라고 그 값을 유지**
   * (한번만 초기화 됨)
   */

외부 변수

  • 함수의 외부에서 선언.
  • extern 예약어 사용.
  • 전역 변수에 해당.
  • 초기화가 없으면 0으로 초기화 됨.
  • 다른 파일에서 외부변수로 선언된 변수의 값을 참조할 수 있음.
  #include <stdio.h>

  int i = 10, j = 20;

  void main()
  {
    //  외부 변수 선언
    //  (**생략 가능**, 변수 i가 선언되면, 선언된 위치 이하부터 그 갑ㅆ이 유효하기 때문.)
    extern int i;
    //  외부 변수 선언
    //  (**생략 불가**, 변수 k가 범위 바깥에 있으므로 )
    extern int k;

    //  변수 j = 20, j = 100이 동시 선언시, **지역변수(자동변수)가 우선**
    int j = 100;

    printf("i : %d, j : %d, k : %d\n", i, j, k);
    //  i : 10, j : 100, k : 50
  }

  int k = 50;
  #include <stdio.h>
  #pragma warning(disable : 4996)

  //  extern_ex() 함수 원형 선언.
  void extern_ex();
  //  전역변수 s 선언.
  char s[100];

  int main()
  {
    printf("INSERT STRINGS : ");
    scanf("%s", s);

    printf("String (%s) WILL STORE GLOBAL VARIABLE S.\n", s);
    extern_ex(); // extern_ex() 호출

    return 0;
  }
  #include <stdio.h>

  extern char s[]; // 변수 s를 외부 변수로 선언

  void extern_ex()
  {
    //  외부 변수 s 출력.
    printf("EXTERNAL VARIABLE S IS \n%s\n", s);
  }

레지스터 변수

  • CPU 내의 레지스터에 자료를 저장하고자 할 때.
  • 예약어 register를 사용.
  • 자동 변수와 동일한 속성.
  • 프로그램의 실행속도 증가를 목적으로 사용.
    (주로 반복문에서 카운터 변수로 사용)
728x90
반응형

'Language > C' 카테고리의 다른 글

[C] 배열과 포인터 - 2  (0) 2020.12.27
[C] 배열과 포인터 - 1  (0) 2020.12.25
[C] 함수와 기억 클래스 - 1  (0) 2020.12.20
[C] 선택 제어문과 반복 제어문  (0) 2020.12.20
[C] 입출력 함수와 연산자 - 2  (0) 2020.12.20

자료형과 선행 처리기

상수와 변수의 기본 개념.
변수 등에 사용되는 자료형.
변수 선언과 선행 처리기의 종류, 활용 방법.

  • 학습 목표

    1. 여러 종류의 상수 이해.
    2. C 언어 변수와 변수 선언에 대한 의미.
    3. 변수 선언 시 고려할 사항.
    4. 기본 자료형의 종류와 범위 이해.
    5. 여러 선행처리기의 용도와 사용방법.
  • 주요 용어

    • 상수 (const) : 값이 한번 정해지면 그 값을 변경할 수 없는 수.
    • 변수 (variable) : 프로그램 실행도중 변할 수 있는 값이 저장되는 기억공간을 의미.
    • 자료형 (data type) : 사용하는 자료의 형태.
    • 초기화 : 선언된 변수에 특정 값을 부여하는 것.
    • 선행처리기 : 컴파일 하기 전에 미리 수행되어야 할 처리기.

상수와 변수

자료형

  • 프로그램에서 사용하는 자료의 형태.
  • 상수변수로 구분하여 사용.
  • 프로그램에서 자료(data)를 처리하기 위해 자료의 생성/처장/처리과정이 필요.
  • C 언어.
    • 수많은 명령어와 자료들로 구성.
    • 이들 자료의 정확한 처리와 효율적인 활용 필요.
  • C 언어는 여러가지 종류의 자료형(data type)을 지원.

상수 (constant)

  • 항상 고정된 값을 갖는 자료.
  • 값이 한번 정해지면 프로그램 도중 그 값을 변경할 수 없는 수.
    • 정수형 상수.
      • 10, 8, 16진수
      • 구분 비고
        10진 상수 10, -10, 999 0~9까지의 숫자를 사용. 0으로 시작 불가.
        8진 상수 011, 055 0~7까지 숫자를 사용, 숫자 앞에 0을 붙임.
        16진 상수 0xac, 0X2A 09, AF를 사용, 숫자 앞에 0x나 0X를 붙임.
        unsigned형 상수 12u, 067u, 0XFAU 부호 없는 상수를 표현하며, 숫자 뒤에 u나 U를 붙임.
        long형 상수 12345l, 0XFFL 큰 길이의 정수를 표현, 숫자 뒤에 l이나 L을 붙임.
    • 실수형 상수.
      • 부동소수점 형 상수.
      • double형을 기본 자료형으로 사용.
      • 구분 비고
        소수 형식 12.345, 3.14, .5 소수점을 사용하여 표현.
        자수 형식 12E3(=12000), 5e-2(=0.005) 10진수와 e(E)를 사용하여 표현.
        float형 상수 3.14f, 3.14e-3F 숫자 뒤에 f나 F를 붙임.
        long double형 상수 3.14l, 3.14E-3L 숫자 뒤에 l이나 L을 붙임.
    • 문자형 상수.
      • 단일 인용부호 '' 로 묶여 있는 1개의 영문자나 숫자문자.
      • 내부적으로는 해당문자의 ASCII CODE 값이 사용.
      • escape 문자
        • excape 기능
          \a 경고음 (alert) 출력
          \b 백 스페이스 (back space)
          \f 새 페이지 (foam feed)
          \n 출력 시 줄 바꿈 (new line)
          \r 커서를 행의 시작 위치로 이동 (carriage return)
          \t 수평 탭 (horizontal tab)
          \0 ASCII 코드 값이 0인 문자 (null 문자)
    • 문자열 상수.
      • 이중 인용부호 ""로 묶여 있는 복수개의 영문자나 숫자.
      • 기억공간에 보관될 때는 문자열 끝에 null 문자 \0가 추가.

변수(variable)

  • 변할 수 있는 값.
  • 프로그램 실행 도중 변할 수 있는 값이 저장 되는 기억공간을 의미.
    • i = 10; 은 i는 변수명이고, 10이란 값을 i라는 이름으로 정의된 기억공간에 저장한다는 의미.
  • 이런 변수 속에 들어가는 값은 수시로 변경될 수 있음.
  • 변수는 사용 전에 반드시 선언하여 컴파일러가 기억공간에서 일정 공간을 확보할 수 있도록 해야 함.

변수의 특징

  • 모든 변수는 이름이 있다.
  • 모든 변수는 정해진 자료형이 있다.
  • 모든 변수는 할당된 값을 갖는다.

변수의 정의 규칙

  • 모든 변수는 사용전에 선언되어야 함.
  • 반드시 영문자나 밑줄로 시작해야 함.
  • 중간에 _ 이외의 특수문자를 섞어 사용할 수 없음.
  • 대,소문자 구분 해야함.
  • 예약어는 사용할 수 없음.

변수의 사용 예

  #include <stdio.h>
  void main() {
    int a, b;   //  정수형 변수 a, b 선언.
    a = 100;    //  변수에 값 대입.
    b = 50;
    printf("a=%d, b=%d\n", a, b);
  }

자료형과 변수 선언

  • 변수.
    • 자료를 저장할 기억공간을 확보하고, 이 공간에 이름을 붙인 것.
  • 변수 선언.
    • 확보된 기억공간에 이름을 부여하는 것.
  • 이러한 변수 선언을 위해 자료형이 필요.

자료형의 종류

  • 기본형 (primitive)
    • 정수형 (integer type)
      • int, short, long, unsigned
    • 실수형 (floating-point type)
      • float, double, long double
    • 문자형 (charactor type)
      • char, unsigned char
    • 열거형 (enumerated type)
      • enum
    • 형 없음
      • void
  • 확장형
    • 배열 형 (array type)
    • 함수 형 (function type)
    • 포인터 형 (pointer type)
    • 구조체 형 (structure type)

정수형

  • int, short, long, unsigned
  • 운영체제에 따라 표현 범위가 다름.
정수형 표형 범위 크기
short int -32768 ~ 32767 2 byte
long int -214783648 ~ 214783647 4 byte
int -2147483648 ~ 2147483647 4 byte
unsigned short int 0 ~ 65535 2 byte
unsigned long int 0 ~ 429496795 4 byte
unsigned int 0 ~ 42959667295 4 byte

실수형

  • float (4 byte), double (8 byte), long double (8 byte)

문자형

  • char, unsigned char
  • ASCII 코드를 사용하여 처리.
정수형 표형 범위 크기
char -128 ~ 127 1 byte
unsigned char 0 ~ 255 1byte
  • 문자형 사용의 예
#include <stdio.h>

int main()
{
  printf("Hell The C\n");

  char ch;
  int in;
  ch = in = 'A';

  printf("ch = %d\n", ch); // ASCII 코드 출력
  printf("in = %d\n", in); // ASCII 코드 출력

  return 0;
}

열거형

  • 숫자 대신 단어 사용

  • 형싱 : enum 태그명 {열거자1, 열거자2, ...}

  • 열거형의 사용 예

#include <stdio.h>

int main()
{
  enum day1 { SUN, MON, TUE, WED, THU, FRI, SAT } d1;
  enum day2
  { sun = 2, mon, tue, wed, thu, fri, sat } d2;

  d1 = WED;
  d2 = wed;

  printf("열거형 d1에 저장된 값 %d\n", d1); // 3
  printf("열거형 d2에 저장된 값 %d\n", d2); // 5

  return 0;
}

변수 선언

  • 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당하는 것.
  • 형식 : 자료형 변수명;
  • 사용 예
    • 정수 -> int 변수명;
    • 문자열 -> char 변수명 [문자수 + 1];

변수 선언 시 고려 사항

  • 변수에 저장될 값의 크기(범위).

    •   #include <stdio.h>
        void main()
        {
          short int n1, n2;
          n1 = 32767 + 1;
          n2 = -32768 - 1;
      
          printf("n1 = %d\n", n1); //  -32768
          printf("n2 = %d\n", n2); //  32767
          //  자료형 범위가 넘어가면 다른 값이 나옴.
        }
  • 변수 선언 위치.

    • 전역 변수로 선언 -> 프로그램 어디서나 사용 가능.

    • 지역 변수로 선언 -> 함수 내에서만 사용 가능.

    •   #include <stdio.h>
      
        int n = 100; //  전역변수 n 선언
        void func()
        {
          int n = 200; //  지역변수 n 선언
      
          printf("n in func() : %d\n", n); //  200
        }
      
        int main()
        {
          printf("n in main() : %d\n", n); //  100
          func();
          return n;
        }
  • 변수의 초기화.

    •   #include <stdio.h>
        int main()
        {
          int i, sum;
      
          for (i = 1; i < 10; i++)
          {
            sum += i;
          }
          printf("from 1 to 10 : %d\n", sum); //  32811
      
          return n;
        }

선행처리기 (preprocessor)

  • 컴파일에 앞서 프로그램 선두에 선언된 지시자들을 밀리 처리하는 역할 수행.
선행처리기 기능
#include 파일 포함
#define 매크로 정의
#if #else #elif #endif 조건부 컴파일

선행처리기 사용시 주의점

  • 반드시 #으로 시작해야 함.
  • 명령문 끝에는 ;을 붙이지 않음.
  • 한줄에 하나의 명령만 쓴다.
  • 소스 프로그램의 첫 부분에 위치한다.

파일 포함 : include

  • C언어에서 제공하는 헤더파일(*.h)을 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 떄 사용.
  • 표준함수인 printf(), scanf()
    • 이 함수들의 원형 (prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h를 include 해야 함.
  • 형식
    • #include <파일명>
    • #include "파일명"
  • 사용 예
    • #include <stdio.h>
    • #include "stdio.h"
    • #include "/tc/lib/math.h"
  • 기능
    • #include 다음에 제시된 파일을 현재 프로그램에 포함시킴.
    • <파일명>은 표준 디렉토리(보통 include)에서 파일을 찾아 포함.
    • "파일명"은 현재 사용 중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용.

매크로 정의 : #define

  • 매크로를 정의할 때 사용.
  • 매크로 macro.
    • 선행처리기 #define을 사용하여 단순 치환되는 자료.
    • 프로그램 작성 시에 명령이나 수식 또는 상수 값이 자주 사용될 때 이들을 대표하는 이름을 붙여 사용하는 대상.
  • 매크로 정의.
    • 매크로 상수 정의.
    • 매크로 함수 정의.

매크로 상수 정의

  • 형식
    • #define 매크로명 자료
    • #define 매크로명
  • 사용 예
    • #define PI 3.141592
    • 이는 프로그램 내의 PI는 3.141592로 치환하라는 것.
  • 기능
    • 프로그램에 나오는 매크로 명을 지정한 자료로 치환한 후, 컴파일하거나 (#define), 정의 해제(#undef) 한다.
#include <stdio.h>
#define ADDR "192.168.0.1"
#define TEL "010-1234-5678"

int main()
{
  printf("ADDR : %s\n", ADDR);
  printf("TEL : %s\n", TEL);

  return 0;
}

매크로 함수 정의

  • 형식
    • #define 매크로명 (인수) (수식)
    • #define 매크로명 (인수, 인수) (수식)
  • 사용 예
    • #define AREA(x) (3.14 * (x) * (x) )
    • #define HAP(a, b) ( a + b )
  • 장점
    • 선행처리기에 의해 단순 치환 방식이므로, 전달 인자의 자료형을 명시할 필요가 없음.
    • 어떠한 자료형 변수를 인자로 전달해도 잘 작동함.
    • 한 두 줄의 코드인 경우 함수로 정의하는 것 보다 속도가 빠름.
#include <stdio.h>
#define ADD1(x, y) x + y
#define ADD2(x, y) ((x) + (y))
#define MULTIPLY1(x, y) x *y
#define MULTIPLY2(x, y) ((x) * (y))

int main()
{
  int a1, a2, m1, m2;

  a1 = 10 * ADD1(3, 4);
  a1 = 10 * ADD2(3, 4);

  m1 = MULTIPLY1(1 + 2, 3 + 4);
  m2 = MULTIPLY2(1 + 2, 3 + 4);

  printf("a1 : %d, a2 : %d\n", a1, a2);
  printf("m1 : %d, m2 : %d\n", m1, m2);

  return 0;
}

조건부 컴파일 : #if #else #elif #endif

  • 조건에 따라 프로그램을 컴파일하는 명령.
  • 최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템 성능 향상.
  • #if, #elif 다음에는 컴파일 여부를 결정하는 조건문 필요.
    • 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함.
    • 변수 지정이나 함수 호출 불가.
    • 주로 매크로 값이 사용.
  #include <stdio.h>
  #define CON 0

  int main()
  {
  #if CON
    printf("\n COMPILE IF \n");
  #else
    printf("\n COMPILE ELSE \n");
  #endif
    return 0;
  }
728x90
반응형

'Language > C' 카테고리의 다른 글

[C] 함수와 기억 클래스 - 1  (0) 2020.12.20
[C] 선택 제어문과 반복 제어문  (0) 2020.12.20
[C] 입출력 함수와 연산자 - 2  (0) 2020.12.20
[C] 입출력 함수와 연산자 - 1  (0) 2020.12.15
[C] C 언어의 개요  (0) 2020.12.13

+ Recent posts