noname02
int main(int argc, char** argv) int argc- 프로그램을 부를 때 전달된 문자열의 갯수 char** argv- argv[0] : 프로그램의 이름 문자열 상수포인터- argv[1~n] : 나머지 전달된 문자열 상수포인터 main함수의 인자는 도스환경에서 쓰이는데,도스 환경에서 프로그램을 실행하는 경우 C:\>프로그램의_이름 의 형태로 실행시킨다. 그런데 main함수에 인자를 받게 된다면 C:\>프로그램의_이름 인자1 인자2 .... 의 형태로 스페이스를 기준으로 인자를 전달받게 되는데 이 경우int argc의 값은 3이 되고, argv 더블포인터 배열은 3개가 생성된다.즉 argc는 최소값이 1이며, argv 더블포인터 배열은 최소 1개(프로그램의 이름)를 갖게 된다.
버퍼 관련#include fflush(stdin);- 입력 버퍼를 비움fflush(stdout);- 출력 버퍼를 비움 입출력 관련 #include int fputc(int c, FILE* stream);- 문자 출력int fgetc(FILE* stream);- 문자 입력int fputs(const char* s, FILE* stream);- 문자열 출력char* fgets(char* s, int n, FILE* stream);- 문자열 입력int fprintf(FILE* stream, const char* format, ...);- 형식지정 문자열 출력int fscanf(FILE* steam, const char* format, ...);- 형식지정 문자열 입력 EOF #include int feof(F..
여러개의 헤더 파일을 전처리하는 경우, 중복되는 경우가 발생할 수 있다.이 때 #pragma once와 #ifndef ~ #endif 를 사용하게 되는데초기에는 #ifndef XX #define XX ~~~~~ #endif 구문을 사용하였다.~~~~~부분에 헤더에 들어갈 내용을 적어두면, 컴파일 과정에서 중복으로 선언하는 경우가 사라지기 때문이다.그리고 이렇게 쓰이는 것을 간단하게 한 내용이 #pragma once이다.그러면 #pragma once를 사용하면 끝일 것 같은데, #ifndef ~ #endif 구문을 사용하는 이유는컴파일러에 따라서 #pragma once를 인식하지 못하는 컴파일러도 존재할 수 있기 때문이란다.요즘엔 그럴 경우는 거의 없다는데..
조건 ? A : B; 조건이 true인 경우 A를 반환, false인 경우 B를 반환한다.생각해보면 함수는 일종의 연산자라고 볼 수 있는 것 같다.인자를 받아서 작업 후 값을 반환하는 것인데, 연산자가 바로 그러한 것 아니겠는가?이 삼항연산자라는 이름이 붙은 이유는 항목이 3항으로 이루어져있기 때문이다.조건, A, B 이렇게 3개로.조건식에는 괄호가 없어도 되지만, 가독성을 위해 괄호를 넣는것이 좋을 것 같다.
123456789101112131415#include #define PLUS(a,b,c) printf(#a "+" #b "+" #c "= %d\n",a+b+c)#define TIMES(a,b,c) printf(#a "*" #b "*" #c "= %d\n",a*b*c) int main(void){ int a,b,c; printf("정수 3개 입력: "); scanf_s("%d %d %d",&a,&b,&c); PLUS(a,b,c); TIMES(a,b,c); return 0;}Colored by Color Scriptercs 예상으로는 1+2+3= 6, 1*2*3=6 이렇게 출력되어야 하지만, 실제로는 그렇지 않았다.#define 선언은 단순 치환인데, 여기서 대체되는 영역에 들어가있는 #(문자열로 인식)은 ..