-
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을 정해서 출력할 수 있다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140404 (Adder, NOT, NAND, puts, fputs, gets, fgets, fflush) (0) 2014.04.04 20140403 (TTL, AND gate, putchar, fputc, getchar, fgetc) (0) 2014.04.03 20140401 (함수 포인터, void 포인터) (0) 2014.04.01 20140331 (2차원 배열, 이중포인터, 배열포인터) (0) 2014.03.31 20140328 (const, 2차원배열) (0) 2014.03.28