
이번시간엔 c언어의 고급 함수, 전처리기, 연산자, main 매개변수 배워보겠다.
마지막까지 화이팅해보자

c언어의 인라인 함수란 함수 호출 시 함수 내용이 호출 지점에 직접 삽입되는 특별한 형태의 함수이다.
이를 통해 함수 호출에 따른 스택 사용을 줄일 수 있어 성능 향상을 기대할 수 있다.
하지만 큰함수를 사용하면 호출 지점마다 함수 코드가 다 복사되므로 코드 크기 증가가 우려된다.
그래서 유의해서 사용해야 한다!

다음으로 재귀함수란 자기 자신을 호출하는 함수이다. 복잡한 문제를 쪼개서 해결할 수 있을 때, 적합하다.
자기 자신을 호출하는 부분, 탈출하는 조건으로 구성되어 있다.
중요한 점은 탈출 조건을 명시하지 않으면, Recursive Case만 반복하므로 무한재귀의 우려가 있다.
인라인처럼 재귀함수도 유의해서 사용해야 된다 ㅎㅎ

C언어의 전처리기는 컴파일러가 실제 코드를 컴파일하기 전에 수행하는 일련의 작업들을 말한다. 전처리기는 소스 코드를 분석하고 변환하여 컴파일러가 처리할 수 있는 형태로 만든다.
전처리기 지시어
전처리기 지시어는 #으로 시작하며 다음과 같은 주요 지시어가 있다
- #include: 헤더 파일을 포함
- #define: 매크로를 정의
- #undef: 매크로를 제거
- #if, #ifdef, #ifndef, #else, #elif, #endif: 조건부 컴파일을 수행
- #line: 행 번호를 변경
- #error: 컴파일 오류를 발생
- #pragma: 컴파일러 관련 지시어를 제공

C 언어의 연산자 종류
- 산술 연산자:
- +, -, *, /, %
- 관계 연산자:
- <, >, <=, >=, ==, !=
- 논리 연산자:
- &&, ||, !
- 비트 연산자:
- &, |, ^, ~, <<, >>
- 대입 연산자:
- =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
- 증감 연산자:
- ++, --
- 조건 연산자:
- ?:
- 쉼표 연산자:
- ,
- sizeof 연산자:
- sizeof
- 포인터 연산자:
- *, &
- 멤버 접근 연산자:
- ., ->

다음으로 main 매개변수를 알아보겠다.
일반적으로 사용자가 실행 시에 argument 를 넣는다.
사용자가 타이핑 치는 것을 받기 때문에, string 타입으로 인식이 되고, 이를 이용해 main 함수를 구성할 수 있다.
아래에 실행예시를 첨부하겠다.

- argc (argument count):
- argc는 프로그램에 전달된 인수의 개수를 나타낸다.
- 프로그램을 실행할 때 입력한 명령어와 그 뒤의 인수들이 argc에 포함된다.
- 일반적으로 최소 1 이상의 값을 가지며, 프로그램 이름 자체가 첫 번째 인수로 계산된다.
- argv (argument vector):
- argv는 프로그램에 전달된 인수들의 문자열 배열이다.
- argv[0]은 프로그램 이름, argv[1]부터 argc-1까지는 실제 인수들이다.
- 각 인수는 문자열 형태로 저장되며, 공백으로 구분된다.
이러한 main 함수 매개변수를 활용하면 사용자가 프로그램을 실행할 때 전달한 인수를 처리할 수 있다. 예를 들어 파일 이름이나 옵션 등을 전달받아 프로그램의 동작을 제어할 수 있다.