ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20140402 (main 인자전달, stream)
    부산IT학원/스마트컨트롤러 2014. 4. 2. 17:50

    32일차

     

     

    ---------------------------

    main 함 수 로   인 자 전 달

    ---------------------------

     

    - int main( int iNum, char * Cmd[] )

    main함수 인자에 위의 인자 처럼 넣어주면

    iNum에는 받은 명령어 갯수,

    Cmd에는 그 명령어들이 각각 저장되어 있다.

     

    ex) gcc -o main main.c

    iNum 에는 4,

    Cmd[0] : gcc

    Cmd[1] : -o

    Cmd[2] : main

    Cmd[3] : main.c

    이렇게 저장됨.

     

    인자의 이름은 프로그래머 재량이지만 보통

    int main(int argc, char * argv[])

    로 많이 쓴다.    argc ( ARGument Count )  argv ( ARGument Vector )

     

     

     

    -------------------------

    이중 포인터와 2차원 배열

    -------------------------

    - 이전에 한 번 했었는데 헷갈려서 다시 한 번 언급한다.

    void test ( int ** ptr )

    { A }

    int main()

    {

        int arr[5][3];

        test( arr );

    ....

    위의 소스처럼 썼었는데 warning!

    이유는

    char ** 와 char [][] 참조수준이 다름.

    서로 데이터 타입이 달라서 그랬다.

    2차배열은 이중포인터와 같은 것인지 착각했었다.

    그래서 고치면

    void test( int (* ptr)[3] ) { A }      or      void test( int ptr[][3] ) { A }

    둘 다 동일한 선언이고 '배열 포인터'이다.

    - int * whoA [4]    // 포인터 배열

    - int (* whoA)[4]   // 배열을 가리키는 포인터

     

     

     

    ------------------

    Stream 흐름

    ------------------

    - ' >' Redirection. 출력 방향을 바꾼다.

    - 표준입력 (키보드) : stdin, 0

    - 표준출력 (모니터) : stdout, 1

    - 표준에러 (모니터) : stderr, 2

    ms-dos, linux에서는 0, 1, 2로 스트림으로 쓴다.

    ex)

    dir > a.txt              dir 내용을 a.txt에 넣음

    dir 1> a.txt            dir 내용을 a.txt에 넣음

    dir 2> a.txt            dir 에러 내용을 a.txt에 넣음

     

     

    - ' >> ' 이것도 redirection인데 ' > ' 와 다른 점은

    > : 새로 쓰기

    >> : 추가로 쓰기

     

     

    - fprintf( Stream, format, ...);

    printf 함수와 다르게 stream을 정해서 출력할 수 있다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Designed by Tistory.